我對$q
的工作方式非常熟悉,我在angularjs中使用它來等待單個承諾解決和多個承諾以$q.all()
來解決。
問題是我不確定它是否有可能做到這一點(以及它是否正常工作):我可以等待一個承諾解決,但也可以運行一些代碼,當我所有的承諾解決了。之後的個人承諾的成功回調已經完成...例如:
var promises = [];
for(i=1, i<5, i++){
var singlePromise = SomeSevice.getData();
promises.push(singlePromise);
singlePromise.then(function(data){
console.log("This specific promise resolved");
});
}
// note: its important that this runs AFTER the code inside the success
// callback of the single promise runs ....
$q.all(promises).then(function(data){
console.log("ALL PROMISES NOW RESOLVED"); // this code runs when all promises also resolved
});
我的問題是,這是否工作,因爲我覺得是這樣,還是有一些奇怪的異步,非確定性結果的風險?
嗨@lonesomeday,我對我的問題做了一個小改動;主要的要求是all()回調在單個promise的成功回調完成後運行! – rex
我看到了,並刪除了我的評論,因爲它不再相關。 – lonesomeday
因此,你的問題實際上是否在最後的'singlePromise.then'回調之後,'.all'回調總是被觸發**? – devqon