首頁 >web前端 >js教程 >JavaScript 中的非同步函數和 Promise 如何協同運作?

JavaScript 中的非同步函數和 Promise 如何協同運作?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-22 20:15:17957瀏覽

How Do Async Functions and Promises Work Together in JavaScript?

非同步函數和 Promise

使用非同步操作時,了解非同步函數和 Promise 如何互動至關重要。

非同步函數總是傳回Promises

與一般函數不同,非同步函數總是傳回一個 Promise,指示其非同步操作的完成。這使得在順序程式碼中處理非同步操作更加簡單。

範例:

async function latestTime() {
  const bl = await web3.eth.getBlock('latest');
  return bl.timestamp;
}

傳回原值與Promise

雖然函數回傳一個原始值(bl.time ),但latestTime()函數本身回傳一個承諾。這在嘗試存取返回值時可能會導致混亂。

使用Promises

要存取返回的Promise 的解析值,您需要使用then( ) 方法:

latestTime().then((time) => {
  console.log(time);
});

或者,在現代JavaScript環境中,您可以使用頂級wait:

const time = await latestTime();
console.log(time);

顯式Promise 處理

為了清楚起見,這裡更明確地表示了非同步函數在Promise 回調方面的行為方式:

function latestTime() {
    return new Promise((resolve, reject) => {
        web3.eth.getBlock('latest').then((bl) => {
            resolve(bl.timestamp);
        })
    });
}

以上是JavaScript 中的非同步函數和 Promise 如何協同運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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