【发布时间】:2015-09-23 13:09:14
【问题描述】:
我需要等到所有的承诺都被解决或拒绝,然后才执行回调。似乎Q 的当前实现在一个 Promise 被拒绝后立即触发回调,这是测试:
var ps = [];
var d1 = $q.defer();
var d2 = $q.defer();
ps.push(d1.promise, d2.promise);
setTimeout(function () {
d1.reject()
}, 2000)
setTimeout(function () {
d2.resolve()
}, 5000)
$q.all(ps).then(function () {
// is not triggered
}).catch(function () {
//triggered after 2000 ms, I need this triggered after 5000ms
})
我怎样才能实现我想要的?
【问题讨论】:
-
promises.all拒绝所有承诺,如果其中任何一个被拒绝。这是 Promise 规范的基本行为。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/….
标签: javascript angularjs promise q