自定义函数如下:
async function test1(){
await func2()//func2也为一个async声明的异步方法
console.log("test1下面内容")
}
async function func2(){
console.log("在func2中")
}
示例1:
console.log("主线程开始")
test1();//此时test1前面不加 await
console.log("主线程结束")
上述执行输出为
主线程开始
在func2中
主线程结束
test1下面内容
解释:在主线程中异步函数test1前面没加await,当进入函数test1后由于异步函数func2前有await关键词,那么会执行完func2中的输出语句,然后跳出test1继续执行主线程的内容,当主线程执行完后才会回来执行test1中func2下面被阻塞的语句
示例2:
console.log("主线程开始")
await test1();
console.log("主线程结束")
上述执行输出为
主线程开始
在func2中
test1下面内容
主线程结束
解释:由于在test1前加上了await关键词故会等到test1中的非微任务和宏任务执行完
总结:在异步函数中 await关键词本行的语句将会被执行,await后面的代码将会被阻塞放入微任务队列中