In Ihrem Code ist die getJSON-Funktion eine asynchrone Funktion, die die async/await-Syntax verwendet. Wie die Frage richtig besagt, gibt jede asynchrone Funktion ein Promise-Objekt zurück. Der Wait-Operator wird dann verwendet, um die Ausführung der Funktion anzuhalten, bis das Promise aufgelöst oder abgelehnt wird.
Sie können das Ergebnis der asynchronen Funktion jedoch nicht direkt mit console.log(getJSON()) protokollieren. Dies liegt daran, dass „await“ nur die Funktionsausführung unterbricht und es dem Promise ermöglicht, mit dem Ergebnis aufzulösen. Die Funktion selbst gibt jedoch immer noch das zugrunde liegende Versprechen zurück, nicht das entpackte Ergebnis.
Um auf das Ergebnis des Versprechens zuzugreifen, müssen Sie entweder die Methode then() verwenden, wie Sie gezeigt haben, oder „await“ in einer anderen Methode erneut verwenden asynchrone Funktion. In Ihrem Fall protokolliert getJSON().then(json => console.log(json)) das Ergebnis { foo: 'bar' }, weil es einen then-Handler an das von getJSON zurückgegebene Promise ankettet.
Wie in der Antwort erwähnt, ist dieses Verhalten für das Promise-Modell von grundlegender Bedeutung. Versprechen stellen asynchrone Vorgänge dar, die zu einem unbestimmten Zeitpunkt in der Zukunft aufgelöst werden können. Mit der then()-Methode können Sie angeben, welche Aktionen ausgeführt werden sollen, wenn das Versprechen aufgelöst wird.
Wenn Sie verstehen, dass asynchrone Funktionen immer Versprechen zurückgeben, auch wenn Sie „await“ verwenden, können Sie asynchronen Code in Ihren Anwendungen korrekt verarbeiten und nutzen .
Das obige ist der detaillierte Inhalt vonWarum gibt meine Async/Await-Funktion immer noch ein Versprechen zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!