Forum Discussion

mikihiir's avatar
mikihiir
Icon for Helper III rankHelper III
7 years ago
Solved

Custom Visual await Promise

Hei

 

Has anyone tried to await for Promise ?

Seems that thread is not blocked  until Promise  returns the answer. it just runs on.

Async is working perfectly but when using await for syncronous then not working ? 

 

code example ->

 

 

 

Thanks in advance !

  • v-evelk's avatar
    v-evelk
    7 years ago

    The second approach must work because it is regular JS behavior. PowerBi Custom Visual code cannot work other way than regular JS flow.

    I suppose that you probably put your code in a wrong place.

    I attached an example of the code that outputs the messages in the next order:

     

    "Async function was started"

    "Set Timeout"

    "Promise result was gotten"

    "Some code after async call!"

     

    <script>
    function getPosts() {
       return new Promise((resolve, redject) => {
          setTimeout(() => {
             console.log("Set Timeout");
             resolve(1);
          }, 2000);
       });
    }
    
    async function init() {
       console.log("Async function was started");
       await getPosts().then((result) => { console.log("Promise result was gotten") });
    }
    
    
    (async () => {
        try {
            var text = await init();
            console.log("Some code after async call!");
            // other code that must wait for async result must be located here
        } catch (e) {
        }
    })();
    </script>

     

    Evgenii Elkin,
    Software Engineer
    Microsoft Power BI Custom Visuals
    [email protected]

8 Replies

  • v-evelk's avatar
    v-evelk
    Icon for Microsoft Employee rankMicrosoft Employee

    Hi,

     

    Aync will not work for synchronous code because it is syntax error

    Why thread must be blocked?

    You called async function as sync and it creates a Promise that is async but in fact will be called immediatelly, but you called setTimeout inside that is asynchronous too.

     

    Evgenii Elkin,

    Software Engineer

    Microsoft Power BI Custom Visuals
    [email protected]

    • mikihiir's avatar
      mikihiir
      Icon for Helper III rankHelper III

      I want the thread to wait until promise return the result

      • mikihiir's avatar
        mikihiir
        Icon for Helper III rankHelper III

        private storage: ILocalVisualStorageService -> API which returns storage info.

         

        Problem is, that thread is not waiting for promise result, it moves on. Here is the example code.