首頁 >web前端 >js教程 >為什麼 Async/Await 函數總是回傳 Promise?

為什麼 Async/Await 函數總是回傳 Promise?

Susan Sarandon
Susan Sarandon原創
2024-11-29 04:48:17515瀏覽

Why Do Async/Await Functions Always Return a Promise?

為什麼 async/await 總是回傳 Promise?

使用 async/await 功能一開始可能會令人困惑,尤其是當涉及到處理非同步函數返回的承諾時。讓我們深入研究所提供程式碼中突出顯示的行為:

<br>const getJSON = async () =>; {<br> const 請求= () =>; new Promise((解, 拒絕) => (<pre class="brush:php;toolbar:false">setTimeout(() => resolve({ foo: 'bar'}), 2000)

));

const json = wait request();
return json;
}

執行 getJSON() 時,函數傳回一個 Promise 目的。發生這種情況是因為每個非同步函數都會在背景傳回一個 Promise。 wait 關鍵字對此 Promise 進行操作,暫停函數執行,直到 Promise 解析或拒絕。

在範例中,await 等待 request() 解析。但是,它不會自動解開 Promise。您需要使用await或.then()明確處理傳回的Promise。

使用.then(),如提供的程式碼所示:

<br>getJSON ().then(json => console.log(json)); // prints { foo: 'bar' }<br>

當Promise 解析時呼叫回呼函數並將結果作為json 參數傳遞。這種方法允許在回調中存取解析值。

另一方面,使用 console.log(getJSON()) 直接記錄非同步函數的結果會傳回一個 Promise 對象,因為它不會解包的承諾。 Promise 模型確保您只能從 Promise 本身內部或透過使用 .then().

等明確解包方法來存取 Promise 的結果。

以上是為什麼 Async/Await 函數總是回傳 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn