首頁 >web前端 >前端問答 >nodejs中await怎麼用

nodejs中await怎麼用

WBOY
WBOY原創
2022-06-29 15:54:124128瀏覽

在nodejs中,await用於以非堵塞方式暫停執行,等待一個promise的非同步請求,一直等待非同步方法執行完畢;await可以用於async函數中,用於等待一個async函數的返回值;promise回傳的是拒絕不成功,拒絕值將會拋出,能夠被「try/catch」捕捉。

nodejs中await怎麼用

本文操作環境:Windows10系統、nodejs 12.19.0版、Dell G3電腦。

nodejs中await怎麼用

Node.js 7 night中引進了async/await用法,但在Node.js 8和Javascript V8才可能正式啟動async/await函式。

什麼是async/await?以前使用Promise是如何實現非同步操作的,以下案例是展示如何使用Promise和Fetch API抓取資料的:

function getTrace () { 
return fetch('https://www.jdon.com', { 
method: 'get' 
}) 
} 
getTrace() 
.then() 
.catch()

使用async/await,能以非堵塞方式暫停執行,一直等待結果返回,如果promise回傳的是拒絕不成功,拒絕值將會拋出,能夠被try/catch捕捉。上面案例可使用async/await寫成如下:

function async getTrace () { 
let pageContent
try { 
pageContent = await fetch('https://www.jdon.com', { 
method: 'get' 
}) 
} catch (ex) { 
console.error(ex) 
} 
return pageContent
} 
getTrace() 
.then()

再看看在Node.js中使用async/await案例,使用setimeout延遲一個函數執行,使用async/await封裝:

// app.js
const timeout = function (delay) { 
return new Promise((resolve, reject) => { 
setTimeout(() => { 
resolve() 
}, delay) 
}) 
} 
async function timer () { 
console.log('timer started') 
await Promise.resolve(timeout(100)); 
console.log('timer finished') 
} 
timer()

建立好這個app.js文件,運行:

node app.js

如果不能運行,可能是nodejs是nightly版本,未正式支援async/await,命令列該為:

node --harmony-async-await app.js

推薦學習:《nodejs影片教學

以上是nodejs中await怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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