async和await快捷记忆

一、async在es6里面给它们的定义是一个函数

用法:async + fn

1.执行fn会返回一个promise对象

async function fn(){
    ...
}
let a = fn();   // 这里的a就是一个Promise函数

2.如果fn里有返回值的话,fn().then((data)=>{ 这里的data就是fn里返回的值})

async function fn(){
    ...
    return 123
}
fn().then(res=>{
    console.log(res);   // 123
})

二、await是async里的一个命令

await一般后面是一个Promise对象,返回的是该Promise对象fulfilled/rejected状态下的结果,如果await后面不是Promise对象,则await命令不表示任何含义,该行表达式正常解读。

1.await+Promise对象

async function fn(){
    let a = await Promise.resolve(123);  // 等同于 await new Promise((res,rej)=>{res(123)})
    return a;
}
fn().then(res=>{
    console.log(a)   // 123
})

 2.await + 非Promise对象

async function fn(){
    let a = await 1+1
    return a;
}
fn().then(res=>{
    console.log(res)   // 2
})

 三、async+await执行顺序

async function fn(){
    // 实际应用中,await后面接的是一个函数,函数返回的结果是一个Promise
    let a = await new Promise((res,rej)=>{
        console.log(4)
        res(1)
    })
    console.log(2)
    return a
}
fn().then(data=>{
    console.log(data)
});
console.log(3)

// 输出结果:
// 4
// 3
// 2
// 1

执行顺序解读 

猜你喜欢

转载自blog.csdn.net/heituoxie10/article/details/121355707
今日推荐