首頁 > web前端 > js教程 > 為什麼 JavaScript 中的非同步函數總是回傳 Promise?

為什麼 JavaScript 中的非同步函數總是回傳 Promise?

Mary-Kate Olsen
發布: 2024-12-14 01:13:09
原創
125 人瀏覽過

Why Do Async Functions Always Return Promises in JavaScript?

非同步函數回傳 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);
  });
}
登入後複製

在此回調中版本:

  • Promise 執行器函數(傳遞給新的 Promise)同步運行,啟動 web3.eth.getBlock 操作。
  • Promise 執行器或回呼中的任何錯誤都會被捕獲並轉換為承諾拒絕。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板