我正在尝试实现以下用例:
答案 0 :(得分:0)
您只需要一个承诺链:
syncTask1();
var promise1 = asyncTask1(); // Triggers first async task
syncTask2();
var promise2 = promise1.then( asyncTask2 );
syncTask3();
var promise3 = promise2.then( asyncTask3 );
...
当然,您需要为自己的任务命名并承诺有意义。这样做的行为与此相同,因为JavaScript是单线程的,并且所有同步任务都将在asyncTask1的承诺可以解决之前完成:
syncTask1();
var promise1 = asyncTask1(); // Triggers first async task
syncTask2();
syncTask3();
...
var promise2 = promise1.then( asyncTask2 );
var promise3 = promise2.then( asyncTask3 );
...
答案 1 :(得分:0)
从图中可以看出Async2和3不仅仅依赖于相对同步函数的完全填充,
使用您的命名约定,这就是我将承诺链接起来的方式:
Synctask1
| |
Sync2 Async1
| \ |
Sync3 Async2(resolved with promiseAll[Async1, Sync2]
\ |
\ |
Async3(resolved with promiseAll[Async2, Sync3]