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

 

posted @ 2019-12-17 23:06  All_just_for_fun  阅读(907)  评论(0编辑  收藏  举报