概述
async声明一个异步函数,返回的是一个promise对象,await只能出现在async修饰的函数中
await就是暂停异步函数,等待期约解决 ,换句话说await 等待的是一个值,遇到await就会向事件队列里面添加一个执行任务
await的两种使用
1.await后面直接跟一个值
async function a(){
console.log(4);
console.log(await 6);
console.log(7);
}
a();
console.log(5);
//4 5 6 7
执行顺序:
调用a函数
输出4
遇到await ,中断函数,向消息队列里面添加一个带有值为6的任务
执行下一步,输出5
此时同步执行完毕,开始执行消息队列里面的任务
2. 后面是一个函数
async function b(){
console.log(1);
console.log(await c());
console.log(4);
}
async function c(){
console.log(2);
return 3
}
b();
console.log(11);
// 1 2 11 3 4
执行顺序:
调用b函数,输出1
遇到await,向消息队列添加一个期约落定后执行的任务
求await后面的值为多少,即执行c函数
输出2
得到期约落定后,向消息队列添加一个给await提供值的任务
b函数退出,输出11
同步执行完毕,开始执行消息队列
将值3提供给await,添加一个恢复执行b函数的任务
继续执行b函数,输出3 、4