async函数跟promise,generator一样也是处理异步的,但是async的写法更为简洁
大家可以先来看下async的特点:
1、语义化强,async就是异步的,await就是等待,很好理解
结构就是async function a(){
await xxx
}
2、await要放在async组合使用,不能跟其他函数搭配
3、async函数返回的是一个Promsie对象,所以后面还可以跟then这些搭配使用
4、如果async里面的promise是reject,那么后面的代码就不会再执行了
举个栗子:
async function fn(){
await Promise.reject("出大事了!!");
let a = await Promise.resolve("很棒!");
console.log(a);
}
fn.().then(res=>{
console.log(res);
}),catch(err=>{
console.log(err)
})
//输出:出大事了
在这个例子中,async跟await搭配使用,因为在fn里面先执行了promise.reject,所以下面的“很棒”就不会再执行了,假如将这个两个的顺序调换一下,先resolve,再reject,则最后两个结果都能够输出
async在处理读取文件上尤为出色,用promise跟generator需要写很多次的代码,async只需要用await按顺序写就可以,非常的简洁:
async function readFile(){
let a1 = await read('1.txt');
let a2 = await read('2.txt');
let a3 = await read('3.txt');
console.log(a1.toString());
console.log(a2.toString());
console.log(a2.toString());
}