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();
