async/await 語法
作用
解決異步嵌套問題,傳說中的終極解決方案
異步問題
- async/await 實現(xiàn)讀取文件 a.txt睹簇、b.txt屁置、c.txt
var fs = require('fs'); function doReadFile(file) { return new Promise((resolve,reject)=>{ fs.readFile(file,function(err,data){ resolve(data.toString()) }) }) } // 定義 async 函數(shù) async function asyncFn() { // 使用 await 執(zhí)行異步代碼 let data1 = await doReadFile('a.txt') console.log(data1) let data2 = await doReadFile('b.txt') console.log(data2) let data3 = await doReadFile('c.txt') console.log(data3) } asyncFn()
特點
-
await
只能放在async
函數(shù)中 -
await
后面跟Promise
對象并且執(zhí)行并且通過reslove
返回結果,也可以是其他類型,但是如果是其他類型就直接執(zhí)行 -
async
返回值是一個Promise
對象 - 只要
await
后面的Promise
執(zhí)行引發(fā)reject
满葛,那么整個async
函數(shù)就會終端操作径簿,async
返回值Promise
對象引發(fā)reject
- 通過
try/catch
或者Promise
的catch
解決async
函數(shù)終端操作