ES6 -async ,await

 1.语法:

async function fn(){ //表示异步,这个函数里面有异步任务
    let res=await xx;//表示后面结果需要等待
}

2.特点:

  • await只能放到async函数中

  • 相比generator语义化更强

  • await后面可以是promise对面,也可以数字,字符串等

  • async函数 返回的是一个promise对象

  • 只要await语句后面Promise状态变成reject,那么整个async函数中断执行

 
async function fn(){
    return 123;
}
console.log(fn());//返回promise对象,Promise {<resolved>: 123}

// 获取return值
fn().then(res=>{
    console.log(res);//123
})
// 只要await语句后面Promise状态变成reject,那么整个async函数中断执行
async function fn(){
    await Promise.reject('fail');
   let a=await Promise.resolve('success');
   console.log(a);
}


fn().then(res=>{
    console.log(res);
}).catch(err=>{
    console.log(err);//fail
})

3.解决async函数抛出错误,影响后续代码执行

// 1.try catch :
async function fn(){
    try{
        await Promise.reject('fail');
    }catch(e){

    }
   let a=await Promise.resolve('success');
   console.log(a);//success
   return 123;
}

fn().then(res=>{
    console.log(res);//123
}).catch(err=>{
    console.log(err);
})
// 2.promise 本身catch

async function fn(){
    await Promise.reject('fail').catch(err=>{
        console.log(err);//fail
    })
   let a=await Promise.resolve('success');
   console.log(a);//success
   return 123;
}

fn().then(res=>{
    console.log(res);//123
}).catch(err=>{
    console.log(err);
})

猜你喜欢

转载自www.cnblogs.com/yuesu/p/9547571.html