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