JS的ES6的async


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM