ES6系列教程之async函数
技术、总结 Apr 21, 2018
async函数,使异步操作变得更加方便。async函数时ES2017标准引入的新特性。
基本用法
async函数返回一个Promise对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。
// 函数声明
async function foo() {}
// 函数表达式
const foo = async function() {};
// 对象的方法
let obj = { async foo(){} };
obj.foo().then()
// Class的方法
class Storage {
constructor() {
this.cachePromise = caches.open('avatars');
}
async getAvatar(name) {
const cache = await this.cachePromise;
return cache.match(`/avatars/${name}.jpg`);
}
}
const storage = new Storage();
storage.getAvatar('jake').then();
// 箭头函数
const foo = async () => {};
await命令
正常情况下,await命令后面是一个Promise对象,返回该对象的结果。如果不是Promise对象,就直接返回对应的值。
如果await后面的异步操作出错,那么等同于async函数返回的Promise对象被reject。
示例
function timeout(ms){
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function asyncPrint(value, ms){
await timeout(ms);
console.log(value);
}
asyncPrint('hello world', 50);