1.async概念:
-
真在意義上解決異步回調函數的問題(由於promise的then方法中還是使用回調函數,而async中await並沒有使用回調函數真正意義上解決回調函數),同步流程表達異步操作。
-
最為常用並與promise結合使用。
-
本質是Generator的語法糖。
2.特點:
-
不需要像Generator去調用next方法,遇到await等待,當前的異步操作完成就往下執行。
-
返回為Promise對象,可以用then方法進行下一步執行
-
async取代Generator函數的星號*,await取代Generator的yield
-
語義上更為明確,使用簡單,沒有任何副作用
3.使用:
-
異步任務使用promise包裝,await之后的異步任務通常返回一個promise的實例。
-
通過修改promise實例的狀態通知await以及給await設定返回值(resolve(data))
1 let num = 1; 2 3 function promiseUtil(){ 4 return new Promise((resolve,reject)=>{ 5 6 setTimeout(()=>{ 7 8 console.log("異步任務"+num+"執行成功"); 9 10 let data = "我是異步任務"+num+"返回的數據xxxx"; 11 num++; 12 13 resolve(data); 14 15 },2000); 16 }) 17 } 18 19 async function AsyncUtil(){ 20 21 console.log("函數開始執行"); 22 23 let result = await promiseUtil(); //返回的是一個Promise對象,可以使用then繼續調用 24 console.log("異步任務返回數據:"+result); 25 26 console.log("函數繼續執行"); 27 28 result = await promiseUtil(); 29 console.log("異步任務返回數據:"+result); 30 31 console.log("函數執行結束"); 32 33 } 34 35 AsyncUtil();