【发布时间】:2017-05-20 22:27:58
【问题描述】:
在这两种情况下只执行一个异步操作。
- 但是
$q的句柄在运行时是顺序调用还是并行调用?- 让我简要解释一下 Angular $q 中顺序执行和并行执行之间的区别
【问题讨论】:
标签: angularjs typescript angular-promise q angularjs-q
在这两种情况下只执行一个异步操作。
- 但是
$q的句柄在运行时是顺序调用还是并行调用?- 让我简要解释一下 Angular $q 中顺序执行和并行执行之间的区别
【问题讨论】:
标签: angularjs typescript angular-promise q angularjs-q
并行执行承诺:
var promise1 = promiseAPI(params1);
var promise2 = promiseAPI(params2);
var promise1and2 = $q.all([promise1, promise2]);
要依次执行 Promise,返回下一个 Promise 给第一个 Promise 成功处理程序:
var promise1 = promiseAPI(params1);
var promise1then2 = promise1.then(function() {
var promise2 = promiseAPI(params2);
//return to chain
return promise2;
});
因为调用 Promise 的 .then 方法会返回一个新的派生 Promise,所以很容易创建一个 Promise 链。可以创建任意长度的链,并且因为一个promise 可以用另一个promise 来解决(这将进一步推迟它的解析),可以在任何时候暂停/推迟promise 的解析链条。
【讨论】:
并行执行是不等待前一个进程完成的东西,顺序是一个进程一个接一个地执行的东西。
$q服务用于异步调用(并行执行|承诺处理),默认并行执行,不支持顺序执行。 如果您想要顺序执行,则必须手动处理它,这意味着在从一个呼叫获得响应后,您再拨打另一个呼叫。
var promise;
promise.then(fun(){
var promise;
promise.then(fun(){
})
})
【讨论】: