- async函數(shù)是什么
async函數(shù)是generator函數(shù)的語法糖。
例如generator函數(shù)依次讀取兩個文件:
寫成async函數(shù),就是下面這樣。
經(jīng)過比較發(fā)現(xiàn),async函數(shù)就是將generator函數(shù)的*號替換成async,將yield替換成await。
- async函數(shù)的改進
1. 內(nèi)置執(zhí)行器
async函數(shù)自帶執(zhí)行器,而generator函數(shù)必須靠執(zhí)行器。
2. 更好的語義
async和await,比起*號和yield,語義更清楚。
3. 更廣的應(yīng)用
async函數(shù)的await后面可以跟promise對象和原始類型的值,而yield不能跟原始類型的值。
- async函數(shù)的用法
async函數(shù)返回一個promise對象,可以使用then方法添加回調(diào)函數(shù)。當(dāng)函數(shù)執(zhí)行遇到await就會先返回,等到異步操作完成后,再接著執(zhí)行函數(shù)體內(nèi)后面的語句。
- async函數(shù)注意點
await命令只能用在async函數(shù)之中,如果用在普通函數(shù),就會報錯。