所以在使用jQuery延遲和$.when
並行加載許多對象。jquery推遲轉入失敗
$.when(
a.ajax(), b.ajax(), c.ajax()
).then(
//do something when all are complete
complete();
);
現在,b.ajax()
有時會失敗,但我實際上不在乎。我只想等到所有的調用都完成之後再調用complete()。
不幸的是,只要b
失敗,when()
拒絕,並且從不觸發then()
回調。這是AFAIK對$.when()
的預期行爲,但在這種情況下適合我。
我想有效的方式說:
$.when(
a.ajax(), b.ajax().fail(return success), c.ajax()
).then(...)
或者可能存在使用when()
,或更合適的結構以不同的方式?
$.onCompleteSucceed = function(oldDfd) {
var newDfd = $.Deferred();
oldDfd.always(newDfd.resolve);
return newDfd.promise();
}
然後,您可以換適當的調用這個方法:
@Ates我認爲你的刪除答案可以通過在返回之前解析新的延遲對象來解決。 – Alnitak 2011-06-20 15:48:14
[$ .Deferred:如何檢測何時執行每個承諾]的可能重複(http://stackoverflow.com/q/19177087/1048572) – Bergi 2015-07-14 11:19:04