我打電話jQuery的異步對於這樣的循環調用:等到所有異步調用完成
for (var index = 0; index < activeSheets.length; index++) {
service.getAsync().then(donecallback, failcallback);
}
,當我得到donecallback,根據返回的數據,我需要運行其他for循環,甚至更多運行電話,
是否有任何簡單的方法來等待,直到他們都完成,看看是否全部通過或一些失敗?
我打電話jQuery的異步對於這樣的循環調用:等到所有異步調用完成
for (var index = 0; index < activeSheets.length; index++) {
service.getAsync().then(donecallback, failcallback);
}
,當我得到donecallback,根據返回的數據,我需要運行其他for循環,甚至更多運行電話,
是否有任何簡單的方法來等待,直到他們都完成,看看是否全部通過或一些失敗?
使用jQuery延遲API。 https://api.jquery.com/jquery.when/
它需要多個承諾作爲參數。
$.when(promise, promise, promise)
.done(function success() { })
.fail(function failure() { })
.always(function always() { });
然後,它可以解決,如果所有承諾的成功,或者如果其中任何失敗,失敗。
您不能將這種承諾數組傳遞給jq'$ .when() '方法,它應該是例如:'$ .when.apply($,[promise,promise,promise])' –
我這樣做。謝謝。 –
你可能尋找Promise.all()
,它將執行所有的承諾,並等待,直到他們全部通或其中一個失敗。
var asyncs = [];
for (var index = 0; index < activeSheets.length; index++) {
asyncs.push(service.getAsync());
}
Promise.all(asyncs).then(donecallback, failcallback);
請參閱http://stackoverflow.com/questions/6538470/jquery-deferred-waiting-for-multiple-ajax-requests-to-finish –