ES6 -async ,await

Posted yuesu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
})

 

以上是关于ES6 -async ,await的主要内容,如果未能解决你的问题,请参考以下文章

vue2.0 代码功能片段

ES6 模块串联

ES6解构赋值

ES6/7 等待异步函数

ES6-11学习笔记--异步迭代

JavaScript ES6 的let和const