首頁 >web前端 >js教程 >為什麼我的 Async/Await 函數仍然回傳 Promise?

為什麼我的 Async/Await 函數仍然回傳 Promise?

Barbara Streisand
Barbara Streisand原創
2024-12-02 02:08:10893瀏覽

Why Does My Async/Await Function Still Return a Promise?

Async/Await:了解 Promise 傳回值

在您的程式碼中,getJSON 函數是使用 async/await 語法的非同步函數。正如問題正確指出的那樣,每個非同步函數都會傳回一個 Promise 物件。然後使用await運算子暫停函數的執行,直到Promise被解析或拒絕。

但是,您無法直接使用console.log(getJSON())記錄非同步函數的結果。這是因為,await 僅取消掛起函數執行並允許 Promise 解析結果。然而,函數本身仍然會傳回底層的 Promise,而不是解開的結果。

要存取 Promise 的結果,您必須使用 then() 方法(如您演示的那樣),或者在另一個方法中再次使用 wait非同步函數。在您的情況下, getJSON().then(json => console.log(json)) 記錄結果 { foo: 'bar' } 因為它將 then 處理程序連結到 getJSON 傳回的 Promise 上。

如答案中所提到的,這種行為是 Promise 模型的基礎。 Promise 表示可能在未來某個未指定時間解決的非同步操作。 then() 方法可讓您指定 Promise 解析時應採取哪些動作。

透過了解非同步函數始終傳回 Promises,即使使用 wait,您也可以在應用程式中正確處理和使用非同步程式碼.

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

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