Kombination von Async/Await und .then() mit Promise-Konvertierungen
In JavaScript ist async/await ein leistungsstarker Mechanismus zur Verarbeitung asynchroner Vorgänge . Es gibt jedoch Situationen, in denen es praktisch sein kann, async/await mit .then() zu kombinieren, insbesondere wenn Promises in asynchrone Funktionen umgewandelt werden.
Betrachten Sie das folgende Beispiel:
<code class="javascript">async apiCall(params) { var results = await this.anotherCall() .then(results => { //do any results transformations return results; }) .catch(error => { //handle any errors here }); return results; }</code>
Hier , gibt die Methode anotherCall() ein Promise zurück, das mithilfe von .then().catch() in eine asynchrone Funktion umgewandelt wird. Dadurch können wir alle notwendigen Transformationen oder Fehlerbehandlungen durchführen, bevor wir die Ergebnisse zurückgeben.
Einige Entwickler bevorzugen aus Gründen der Kompaktheit die Verwendung von async/await mit .catch() anstelle von try/catch. Zum Beispiel:
<code class="javascript">async function asyncTask() { throw new Error('network') } async function main() { const result = await asyncTask().catch(error => console.error(error)); console.log('result:', result) } main();</code>
In diesem Beispiel löst die Funktion asyncTask() einen Fehler aus, der von der Methode .catch() im Warteaufruf abgefangen wird. Dies verhindert, dass sich der Fehler ausbreitet, und ermöglicht uns eine ordnungsgemäße Behandlung innerhalb der main()-Funktion.
Es ist wichtig zu beachten, dass die .then()-Methode ein neues Promise erstellt und zurückgibt, auch wenn das ursprüngliche Promise zurückgegeben wurde durch anotherCall() bereits gelöst. Dieses Verhalten kann zu unerwarteten Nebenwirkungen führen, insbesondere wenn mehrere Promises mithilfe von .then().
miteinander verkettet werdenDas obige ist der detaillierte Inhalt vonWann und warum sollten wir async/await mit .then() in JavaScript kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!