异步

1. async也是处理异步的,它是对Promise的一种扩展,让异步更加方便;

2.优势:async是基于Promise的,虽然是异步操作,但看上去像同步;

3.首先,我们先来看下async的基本语法:

//创建一个async函数,执行异步操作 //await 关键字:等待异步执行完毕后回调; let as = async () =>{ let result = await p; console.log(result);}; //执行async函数 as(); //上面语法,用ES5过渡一下,帮助理解,具体如下: async function as() {} let as = async function() {} let obj = {async as(){}};//也支持对象形式   4.如果有三个异步需要列队输出,我们用async语法来处理一下; 例 多个异步,按输出顺序加载,没有then,清晰很多 async function as() {     let r1 = await pi,     r2 = await p2,     r3 = await p3;     consoLe.log(r1);     console.log(r2);     console.log(r3);     }     as(); pS: await关键字只能在 async函数内部,否则不可识别; PS:从上面的例子中,能感受到语义和清晰度都得到了很大提升,更像同步代码:     //批量异步列队,类似 Promise.all()     async function as() {         let all = [ await p1,await p2,await p3];         console.log(al1);     }         as();   5. async函数如果设置了返回值,这个值是Promise对象。 返回值是Promise对象 相当于Promise resolve() async function as() {     return " hello,async! "; }     as().then(value => {         console.log(value);     }); PS:如果return await p:这种,会导致提前输出pending状态,还是需要then:
    async function as() {         return await p1;     }     console.log(as);//得到的是promise对象的pending状态     as().then(value=>{//这里还是需要then         console.log(value);     })
上一篇:再次理解 async/await


下一篇:处理异步异常(使用promise的reject抛出错误,用await接收)