Wie kann man eine for
Schleife erstellen, die darauf wartet, dass ein asynchroner Aufruf abgeschlossen wird, bevor eine neue Iteration einer Schleife OHNE eine Bibliothek (wie jQuery) gestartet wird?Eine FOR-Schleife warten WITHOUT eine Bibliothek in JS
Beispiel:
var items = [1,2,3,4,5];
for (var i = 0; i < items.length; i++) {
var promise = new Promise(function(resolve, reject){
asyncAPIcall({
body : item[i]
}, function(error, response){
if(error) {
reject();
} else {
resolve();
}
});
promise.then(function() {
//continue loop
}, function() {
//break loop
});
}
Dank
UPDATE (4/29)
I dieser Lösung gedacht, wo ich eine Funktion erstellen th bei Anrufen selbst:
var items = [1,2,3,4,5];
var counter = items.length - 1; //minus one since array is zero based.
function myLoop(){
asyncAPIcall({
body : item[counter]
}, function(error, response){
if(error) {
// Error message.
} else {
counter = counter - 1;
if(counter == -1){
//Done
}
else {
myLoop();
}
}
});
}
Sie können nicht. Was musst du wirklich tun? – Amit
Eine For-Schleife ist synchron. Es kann niemals auf eine asynchrone Operation warten. Sie können jedoch eine Warteschlange oder etwas Ähnliches haben. –
@Amit Ich muss eine lange Reihe von API-Aufrufe auslösen und wenn einer fehlschlägt, stoppe die Kette von zusätzlichen Anrufen. Ich interagiere mit einer API, die nur ein Objekt gleichzeitig akzeptiert, also muss ich es 20 Mal drücken, um alle meine Objekte zu senden. –