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