在您的程式碼中,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中文網其他相關文章!