【发布时间】:2016-11-03 23:06:03
【问题描述】:
我有这个代码:
var promiseArr = [],
innerPromises = [],
innerIndex = 0;
angular.forEach(some_object, function (value, key) {
console.log(1);
innerPromises[innerIndex] = $q.defer();
promiseArr.push(innerPromises[innerIndex].promise);
(function(innerIndex) {
func_returning_promise(args).then(function(data) {
console.log(2);
// Some code working on returned data
innerPromises[innerIndex].resolve(true);
});
})(innerIndex);
innerIndex++;
});
$q.all(promiseArr).then(function() {
console.log(3);
});
forEach 运行 3 次。预期的结果是
1
1
1
2
2
2
3
但是3 出现在2s 之前和1s 之后,这对我来说似乎完全不合逻辑! innerPromises 无法解析,但在 2s 被记录后。
感谢您的帮助。
【问题讨论】:
-
不是我的答案的一部分,所以我将作为评论添加:您不必明确创建内部承诺。
func_returning_promise(args).then(...)返回一个 Promise,因此您只需将其推送到您的 Promise 数组中,当成功函数完成时,它将自动为您解析或拒绝。
标签: angularjs promise angular-promise