In Angular 6 wurde Entwicklern von der Verwendung des folgenden Codes abgeraten:
await someFunction().then(result => { console.log(result); });
Die Sorge besteht nicht darin, dass es sinnlos ist, auf eine Versprechenskette zu warten – solange someFunction() ein Versprechen zurückgibt, funktionieren beide Snippets gleich. Das Problem liegt woanders.
Die Verwirrung entsteht durch die Vermischung asynchroner Programmierstile. Asynchrone Funktionen, die in ES2017 eingeführt wurden, führen das Schlüsselwort „await“ ein. Wenn „await“ innerhalb einer asynchronen Funktion verwendet wird, wird die Ausführung der Funktion angehalten und auf die Auflösung des Versprechens gewartet. Dies vereinfacht die asynchrone Programmierung und erleichtert das Lesen und Verstehen von Code.
Andererseits ist Promise Chaining ein älterer Ansatz der asynchronen Programmierung. Dabei werden .then() verwendet, um mehrere Versprechen miteinander zu verketten. Obwohl dieser Ansatz immer noch gültig ist, kann er in Kombination mit „await“ verwirrend sein.
Zum Beispiel, wenn Sie einen weiteren Promise-Aufruf an der Stelle des console.log()-Aufrufs hinzufügen oder bedingt von der Funktion zurückkehren möchten , wird die Semantik unklar. Können Sie im Rückruf „await“ wie an anderer Stelle in der Funktion verwenden? Müssen Sie das Ergebnis des .then()-Rückrufs zurückgeben? Ist es überhaupt möglich, von der äußeren Funktion zurückzukehren?
Um diese Komplikationen zu vermeiden, wird empfohlen, sich an einen asynchronen Programmierstil zu halten und aus Konsistenzgründen vorzugsweise „await“ zu verwenden. Dadurch können Sie Ihren Code vereinfachen und das Risiko der Einführung von Fehlern verringern. Die prägnantere und klarere Version wäre:
const result = await someFunction(); console.log(result);
Das obige ist der detaillierte Inhalt vonIst das Warten auf eine Versprechenskette in Angular 6 ein Code-Geruch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!