3 回答

TA貢獻1856條經(jīng)驗 獲得超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條經(jīng)驗 獲得超18個贊
最近出現(xiàn)了這個問題,但是承諾數(shù)量未知。使用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 關注
- 670 瀏覽
添加回答
舉報