async await
基本上是Generator斥扛、yield的一個封裝(實際也就是通過Promise實現(xiàn))。async相當于那個*
污筷,await相當于那個yield泳姐,只不過await會進行一些特殊處理
async function t(){
var a = new Promise(
function (resolve, reject) {
console.log(1);
resolve(9);
console.log(2);
})
var b = new Promise(
function (resolve, reject) {
console.log(3);
resolve(8);
console.log(4);
})
console.log(5);
b=await b;
a=await a;
console.log(b);
console.log(a);
console.log(6);
}
t();
console.log(7);
輸出為1 2 3 4 5 7 8 9 6。主要是最后幾個輸出為8 9 6匆篓。因為執(zhí)行到await時浑度,會立刻跳出當前async函數(shù),待cpu空閑后回來打印b,a,6這幾個值鸦概。
1.await關鍵字必須在async函數(shù)內(nèi)或外部全局代碼中
2.async必定返回一個Promise對象箩张。異步函數(shù)的返回值value
,最終變?yōu)?code>Promise.resolve(value)(沒有返回值時value===undefined
)窗市;函數(shù)內(nèi)的throw先慷,立即變?yōu)?code>Promise.reject(value)返回