仅在执行异步操作时两者。
- 但
$q
处理这个问题的方法是在运行时进行顺序调用还是并行调用?- 让我简要解释角度$ q
中顺序和并行执行之间的差异
答案 0 :(得分:2)
并行执行不会等待前一个进程完成,而顺序就是一个接一个地执行进程的事情。
$ q service用于异步调用(并行执行| promise处理),默认情况下它执行并行执行,它不支持顺序执行。 如果你想要一个顺序执行,你必须手动处理它,这意味着在收到一个电话的响应后你再打一次电话。
var promise;
promise.then(fun(){
var promise;
promise.then(fun(){
})
})
答案 1 :(得分:0)
并行执行承诺:
var promise1 = promiseAPI(params1);
var promise2 = promiseAPI(params2);
var promise1and2 = $q.all([promise1, promise2]);
要执行承诺,返回第一个承诺成功处理程序的下一个承诺:
var promise1 = promiseAPI(params1);
var promise1then2 = promise1.then(function() {
var promise2 = promiseAPI(params2);
//return to chain
return promise2;
});
因为调用promise的.then
方法会返回一个新的派生promise,所以很容易创建一个promise链。可以创建任意长度的链和,因为承诺可以通过另一个承诺来解决(这将进一步推迟其解决方案),可以在任何点暂停/推迟承诺的解决。链。