$q 中顺序执行和并行执行的区别

Difference between Sequential and Parallel executing in $q

两者都在执行异步操作的时候而已。


  • But how the $q handle for this is a Sequential call or Parallel call on runtime?
  • and let me brief explanation about the Difference between Sequential and Parallel executing in angular $q

Parallel Execution是不等待上一个进程完成,Sequential是一个进程一个接一个地执行。

$q服务用于异步调用(并行执行|promise处理),默认并行执行,不支持顺序执行。 如果你想要顺序执行,你必须手动处理它,这意味着在从一个调用获得响应后你再进行另一个调用。

var promise;
promise.then(fun(){
   var promise;
   promise.then(fun(){
   })
})

并行执行承诺:

var promise1 = promiseAPI(params1);
var promise2 = promiseAPI(params2);

var promise1and2 = $q.all([promise1, promise2]);

要按顺序执行承诺,return 下一个承诺到第一个承诺成功处理程序:

var promise1 = promiseAPI(params1);

var promise1then2 = promise1.then(function() {
    var promise2 = promiseAPI(params2);
    //return to chain
    return promise2;
});

因为调用承诺的 .then 方法 return 是一个新的派生承诺,所以很容易创建承诺链。可以创建任意长度的链,并且 因为一个承诺可以用另一个承诺解决(这将进一步推迟其解决方案),因此可以 pause/defer 解决承诺在链中的任何一点。

-- AngularJS $q Service API Reference -- Chaining Promises.