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的主要内容,如果未能解决你的问题,请参考以下文章