非同步函數回傳 Promise 而不是 Value
在 async/await 程式設計中,非同步函數總是會傳回一個 Promise。這個 Promise 代表了函數非同步工作的最終完成。
在另一個非同步上下文中呼叫非同步函數時,可以使用 wait 來暫停,直到 Promise 完成。但是,在非非同步上下文中(通常是頂級或事件處理程序),您必須直接使用Promise:
latestTime() .then(time => { console.log(time); }) .catch(error => { // Handle/report error });
在現代環境中,模組內支援頂級等待:
const time = await latestTime();
為了更好地理解,讓我們檢查一下非同步函數的明確Promise回呼版本:
function latestTime() { return new Promise((resolve, reject) => { web3.eth.getBlock('latest') .then(bl => { console.log(bl.timestamp); console.log(typeof bl.timestamp.then == 'function'); resolve(bl.timestamp); }) .catch(reject); }); }
在此回調中版本:
以上是為什麼 JavaScript 中的非同步函數總是回傳 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!