Ich habe eine Schleife mit mehreren Ajax-Anfrage. jeder Ajax wird durch immer Callback verwaltet. jeder Ajax ist in Versprechen Array geschoben. schließlich $ .wenn immer verwendet wird.Jquery AJAX Versprechen mit immer Pause, wenn Ajax scheitern
Wenn alle $.ajax
Erfolg haben, wird die $.when.apply($, promises).always(...);
aufgerufen, wenn alle $.ajax
Aufrufe erfolgreich sind.
Aber zum Beispiel auf 3 $.ajax
Anruf der zweite schlägt fehl, der $.when.apply($, promises).always(...);
wird nur nach dem zweiten und nicht wenn alle 3 $.ajax
Anrufe erfolgreich sind gefeuert.
Irgendwelche Hilfe? den Code Nach
$(".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
});
}
ist .always sogar relevant mit jquery Versprechungen? Ja, ich glaube, ich habe es nie in diesem Zusammenhang benutzt. jquery 1.6+ –
Ok, also, was passiert, ist Ihr $ .when() erstellt ein Versprechen, das entweder löst oder ablehnt. Wenn eines der Versprechen ablehnt, wird das Ganze sofort abgelehnt, das Überspringen ist nicht beendet. Das deutet darauf hin, dass Sie ein Versprechen haben, das versagt, wenn es nicht allen gelingt. Wenn Sie darauf warten möchten, dass alle Benutzer unabhängig von einem Fehler ausgeführt werden, müssen Sie Fehler abfangen und in Erfolge konvertieren. –