Ich versuche derzeit, ein Array von Paaren mit asynchronen Aufrufen in Javascript zu generieren, aber ich kann nicht scheinen, es in der richtigen Reihenfolge zu bekommen.Generieren von Dataset mit Versprechen
generateDataPoints: function (iterable, source, arg) {
let pairs = []
let prevTime = 0
for (let index in iterable) {
let event = iterable[index]
getTime(event.valueOf()).then(function (time) {
query(source[arg], event.valueOf()).then(function(val) {
if (time !== prevTime) {
prevTime = time
pairs.push([time, val])
console.log(pairs) // This works as expected but only happens after the program returns
} else {
Promise.resolve()
}
})
})
}
return Promise.resolve(pairs)
}
Das Problem ist, dass der Befehl "pairs.push .." passiert, nachdem ich zurückkomme. Ich kann nicht herausfinden, was genau falsch läuft und wie ich diesen Prozess synchronisieren kann. Jede Hilfe wird geschätzt.
so ... äh, Sie sicherlich ein Versprechen in den Code eingeführt, aber nichts, was man mit ihm tat in einem Versprechen führen würde, dass das nicht zurück auflösen, bis die Arbeit erledigt ist. –
@KevinB Hm, ich habe versucht, die for-Schleife in einem neuen Versprechen zu wickeln, während "Entschlossenheit (Paare)" zurückgegeben wird. Das hat auch nicht funktioniert – WhosSu
Sie suchen nach 'Promise.all'. Erstellen Sie mit der Schleife ein Array von Versprechen, eines für jedes einzelne Ergebnis. – Bergi