1.Async函数是什么
generator函数的语法糖。
Async
函数返回一个Promise
对象,当函数执行的时候,遇到await
就会先返回,等到异步处理完成之后,再接着处理函数体内await后面的语句。
2.Async函数怎么用
eg.1
async searchFun() {
const { code, data } = await service('categorySearch', { name: this.keyWord });
if (code === 200) {
this.searchResult = data;
}
}
上面这个async函数大概效果就是,请求’categorySearch‘接口,获取返回结果,并把获取到的data值赋值给’searchResult‘。
分析为什么要这么写?
service应该改是个异步接口请求的方法,请求需要一定时间;我们必须等接口请求成功有返回值时,才能给searchResult赋值;否则searchResult赋值结果可能是空。
eg.2
async function f() {
return 'hello world';
}
f().then((v) => {
console.log(v); // hello world
});
这个async函数例子和上面的例子最大的区别就是加了then()方法处理。
为什么可以使用then?
async函数返回的是一个Promise对象,所以可以使用then方法处理。而且,async函数内部return语句的返回值,会成为then方法回电函数的参数。
同样,async函数也可以使用catch方法处理错误。
3.Async函数的语法
有上面的两个简单的例子可以看出来主要有下面两个。
-
async
async函数就是在普通函数前面加async
关键字,表面该函数内部有异步操作。 -
await
await
命令只能出现在async函数内部,当然也可以没有。
await
命令后面可以是Promise对象和原始数据类型(number,string,Boolean);但是原始数据类型会自动转成resolved的Promise对象。
4.来源
以上总结主要来自于阮一峰的ES6入门教程之async一章