Ich habe eine dynamisch bestimmte Liste von Ajax-Anrufe, die nacheinander vorgenommen werden müssen. Da Versprechen nicht in allen Browsern gleichermaßen umgesetzt werden, gibt es eine Möglichkeit, jeden Ajax-Aufruf nach dem Abschluss des vorherigen zu machen?Führen Sie Ajax Anrufe in Reihenfolge
Ich habe versucht:
var favoritesArray = [1,2,3] //dynamically created by user
var arrayOfCalls = $.each(favoritesArray, function each(idx) {
var favId = favoritesArray[idx];
return $.ajax({ url: '/favorites/' + favId, type: 'DELETE' });
});
$.when(arrayOfCalls)
.then(function success() {
doStuff();
});
Alle Anrufe laufen, aber warten nicht auf die vorherige zu beenden. Gibt es einen Weg, das zu erreichen?
Nicht sicher, warum Sie sich Sorgen machen. Keine davon scheint von den vorherigen abhängig zu sein. '$ .when' wird konsistent über den Browser sein, aber beachten Sie, dass nichts von '$ .each' zurückgegeben wird.' arrayOfCalls 'ist also undefiniert. – charlietfl
Jeder Aufruf aktualisiert dieselbe Liste und wenn die Aufrufe gleichzeitig abgefeuert werden, bleiben die in der Liste wird falsch und unterschiedlich sein, je nachdem, welches zuerst abgeschlossen wurde. – ebbishop
Danke für den Hinweis über $ .Each obwohl. – ebbishop