在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 pageContenttry { 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.jsconst 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怎麼用的詳細內容,更多請關注本站其它相關文章!