3 回答
TA贡献1856条经验 获得超17个赞
当所有链条都解决后,我希望所有人解决。
当然,然后将每个链的承诺传递给all()而不是最初的承诺:
$q.all([one.promise, two.promise, three.promise]).then(function() {
console.log("ALL INITIAL PROMISES RESOLVED");
});
var onechain = one.promise.then(success).then(success),
twochain = two.promise.then(success),
threechain = three.promise.then(success).then(success).then(success);
$q.all([onechain, twochain, threechain]).then(function() {
console.log("ALL PROMISES RESOLVED");
});
TA贡献1853条经验 获得超18个赞
最近出现了这个问题,但是承诺数量未知。使用jQuery.map()解决了。
function methodThatChainsPromises(args) {
//var args = [
// 'myArg1',
// 'myArg2',
// 'myArg3',
//];
var deferred = $q.defer();
var chain = args.map(methodThatTakeArgAndReturnsPromise);
$q.all(chain)
.then(function () {
$log.debug('All promises have been resolved.');
deferred.resolve();
})
.catch(function () {
$log.debug('One or more promises failed.');
deferred.reject();
});
return deferred.promise;
}
- 3 回答
- 0 关注
- 637 浏览
添加回答
举报