本篇文章转载自我的个人博客
async对Generator函数的改进:
Generator执行必须靠执行器(类似co模块),async函数自带执行器
返回值为Promise对象,则async函数可以看成封装多个异步操作的Promise对象
async表示异步操作,await表示紧跟在后面的表达式需要等待结果
co模块约定,yield命令后面只能是Trunk函数或Promise对象,await后面可以是Promise对象或原始数据类型(数值、字符串、布尔值,此时相当于同步)
async函数声明:
//函数声明
async function foo(){}
//函数表达式
const foo = async function(){}
//对象的方法
let obj = { async foo(){} }
obj.foo().then(...)
//Class的方法
class Storage{
constructor(){
}
async foo(){
await ...;
}
}
//箭头函数
const foo = async () => {}
async函数内部报错会导致返回promise对象处于reject状态