Ich habe einen Anruf meiner Asynchron-Funktion innerhalb einer foreach-Schleife, wie folgt aus:
Async Funktionen wartet nicht innerhalb einer foreach-Schleife
foo {
list.forEach(function(field) {
populateValues(field);
});
// here my list is returned incomplete
return list;
}
populateValues = async function (field) {
if (field.someProp === true) {
fields.val = await somePromise();
}
}
somePromise = function() {
return new Promise(resolve => {
fetchMyAPIExample().then(function(value) {
resolve(value);
}
}
}
populateValues () wartet richtig mein Versprechen, aber foo() Ich warte nicht auf populateValues, um die Liste zurückzugeben, daher wird meine Liste unvollständig zurückgegeben.
Wie auch immer, hier ändert nichts die var 'list', also wird die Korrektur nicht ausreichen, Ihre Liste bleibt gleich. Wir haben auch einen Verweis auf 'Felder', die hier nicht deklariert werden. – Kaddath
@kaddath nein, field.val = ... –
@ Jonasw ich denke, das ist, was beabsichtigt war, aber das wird auch nicht wirklich helfen, als' Feld' In seinem Code ist eine Zeichenfolge mit dem Namen der Eigenschaft, nicht die Eigenschaft selbst. Aber du korrigierst alles richtig in deiner Antwort Ich denke – Kaddath