私は複数のajax要求を持つループを持っています。 各Ajaxは常にコールバックによって管理されます。 各ajaxがpromises配列にプッシュされます。最後に$ .whenが常に使用されます。 AJAXが失敗したときにJQuery AJAXの約束はいつも壊れています
$.ajax
が成功した場合は、$.ajax
が成功すると$.when.apply($, promises).always(...);
が呼び出されます。
しかし、たとえばが2番目に失敗した場合、$.when.apply($, promises).always(...);
は2番目の後にのみ起動され、すべてが3 $.ajax
コールが成功した場合は起動されません。
助けが必要ですか? @ケビン-Bとコード
$(".upload_all").bind("click", function() {
var confirmed_count = 0;
var error_count = 0;
var promises = [];
to_uploads.each(function(index,val) {
var elem = $(this);
var promise = $.ajax({
url: "/upload/storeUploadedFile",
type: 'POST',
}).always(function(data_or_jqXHR, textStatus, jqXHR_or_errorThrown) {
if (textStatus === "success") {
// ..
} else {
// ..
}
});
promises.push(promise);
});
$.when.apply($, promises)
.always(function() {
console.log("Promises Always! ") // do other stuff
});
}
でも、jqueryの約束にもかかわらず?ええ、私はその文脈でそれを使ったことはありません。 jquery 1.6+ –
さて、あなたの$ .when()は、解決するか拒否するかを約束します。約束の1つが拒否された場合、すべてが直ちに拒否され、完了していないものはスキップされます。それは、彼らがすべてに到達していなければ、失敗していると約束していることを示唆しています。障害に関係なくすべてを実行するのを待つ場合は、障害を傍受して成功に変換する必要があります。 –