I Dieses Stück Code in JS hat, wie unten beschriebenJavaScript benimmt weirdly (vielleicht aufgrund ihrer asynchronen Natur)
for (id in ids) {
if (id needs to be called) {
console.log(id); // statement 1
$http.post('someEndpoint', {id : id}).then(function success(response) {
console.log(id); // statement 2
someDataStructure[id].data = response.data;
});
}
}
ids = [1, 2, 3]
Unter der Annahme, auf Anweisung 1 wird auf der Konsole 1 2 3
gedruckt. Bei Anweisung 2 wird 3 3 3
gedruckt. Dies ist offensichtlich weniger als ideal und ich verliere Daten für . Außerdem muss ich hinzufügen, dass der Endpunkt Anfragen für 1 2 3
bekommt, also bin ich an dieser Stelle wirklich verwirrt. Es wäre toll, wenn jemand etwas Licht werfen könnte und mir helfen würde zu verstehen, wie ich das beheben kann.
Wenn 'ids' ein Array ist,' verwenden für (Lassen Sie den Index in ids) ', und dann 'let id = ids [index]'. – NMSL
Wenn 'ids' ein Array ist, sollten Sie' for-in' nicht verwenden. Ändern Sie es in 'ids.forEach (function (id) {...})' und Sie sind eingestellt. –
@squint Ja, ich kenne dieses Problem, deshalb habe ich gesagt: "Achten Sie darauf, die ID zu nennen, nicht den Index von ID. Um Verwirrung zu vermeiden, habe ich meine Antwort geändert. Mit ES6 lassen Sie uns los – NMSL