在nodejs中,await用於以非堵塞方式暫停執行,等待一個promise的非同步請求,一直等待非同步方法執行完畢;await可以用於async函數中,用於等待一個async函數的返回值;promise回傳的是拒絕不成功,拒絕值將會拋出,能夠被「try/catch」捕捉。
本文操作環境:Windows10系統、nodejs 12.19.0版、Dell G3電腦。
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中文網其他相關文章!