猫幻  

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);
    })
posted on 2021-12-01 19:52  猫幻  阅读(60)  评论(0编辑  收藏  举报