Heim >Web-Frontend >js-Tutorial >Warum geben Async/Await-Funktionen immer ein Versprechen zurück?
Warum gibt async/await immer ein Versprechen zurück?
Die Verwendung der Async/await-Funktionalität kann zunächst verwirrend sein, insbesondere wenn es darum geht Umgang mit dem von der asynchronen Funktion zurückgegebenen Versprechen. Sehen wir uns das im bereitgestellten Code hervorgehobene Verhalten genauer an:
<br>const getJSON = async () => {<br> const request = () => neues Versprechen((auflösen, ablehnen) => (</p> <pre class="brush:php;toolbar:false">setTimeout(() => resolve({ foo: 'bar'}), 2000)
));
const json = waiting request();
return json;
}
Beim Ausführen von getJSON() gibt die Funktion ein Promise-Objekt zurück. Dies geschieht, weil jede asynchrone Funktion unter der Haube ein Promise zurückgibt. Das Schlüsselwort „await“ arbeitet mit diesem Versprechen und unterbricht die Funktionsausführung, bis das Versprechen aufgelöst oder abgelehnt wird.
Im Beispiel wartet „await“ darauf, dass request() aufgelöst wird. Das Versprechen wird jedoch nicht automatisch entpackt. Sie müssen das zurückgegebene Versprechen explizit entweder mit „await“ oder „.then()“ verarbeiten.
Mit .then(), wie im bereitgestellten Code zu sehen:
<br>getJSON ().then(json => console.log(json)); // druckt { foo: 'bar' }<br>
ruft die Rückruffunktion auf, wenn das Versprechen aufgelöst wird, und übergibt das Ergebnis als JSON-Parameter. Dieser Ansatz ermöglicht den Zugriff auf den aufgelösten Wert innerhalb des Rückrufs.
Andererseits gibt die direkte Protokollierung des Ergebnisses der asynchronen Funktion mithilfe von console.log(getJSON()) ein Promise-Objekt zurück, da es nicht entpackt wird das Versprechen. Das Promise-Modell stellt sicher, dass Sie auf das Ergebnis eines Promises nur aus dem Promise selbst heraus oder durch Verwendung einer expliziten Entpackungsmethode wie .then().
zugreifen könnenDas obige ist der detaillierte Inhalt vonWarum geben Async/Await-Funktionen immer ein Versprechen zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!