ES6总结之async函数
Contents
async函数定义
async
函数的执行与普通函数一摸一样,只需要执行即可- 调用
async
函数返回一个Promise
对象。如果里面还有return
语句返回值将作为then
方法的参数 - 必须等到
await
命令后面的Promise
对象执行完,才会使得async
返回的Promise
对象的状态发生改变
async function f() {
return 'hello world';
}
f().then(v => console.log(v))
// "hello world"
await
async
表示函数里面有异步操作和Promise
类似相当于状态机,await
表示紧跟在后面的表达式需要等待结果。
对await
后面的Promise
进行异常捕获
async function f() {
await Promise.reject('出错了')
.catch(e => console.log(e));
return await Promise.resolve('hello world');
}
async function f() {
try {
await new Promise(function (resolve, reject) {
throw new Error('出错了');
});
} catch(e) {
}
return await('hello world');
}
多异步操作触发
如果多个await
命令不存在继发关系,应该让它们同时触发
let [foo, bar] = await Promise.all([getFoo(), getBar()])