非同步函數和 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中文網其他相關文章!