我有這樣的代碼:
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
出來之前2
秒和後1
S,這似乎完全不合乎邏輯給我! innerPromises
未解析,但2
已記錄。
感謝任何幫助。
不是我的答案的一部分,所以我將添加爲評論:您不必明確創建內部承諾。 'func_returning_promise(args).then(...)'返回一個承諾,所以你可以將它推到你的承諾數組上,當成功函數完成時它會自動解析或拒絕。 – Duncan