async函数的返回值?await后面表达式的值?
- async函数返回值一般是promise
- await 后面一般是promise表达式,返回值就是promise执行成功的结果(如果promise执行失败,需要try...catch捕获)
如果await后面不是promise,则返回值就是该表达式的值
async函数中可以不包含await,但是await必须在async函数中。
异步任务队列的区分(宏队列和微队列)
堆栈队列
宏队列
- 用来保存待执行的宏任务(回调函数),如:定时器回调/DOM事件回调/ajax回调
微队列
- 用来保存待执行的微任务(回调函数),如:promise回调函数,MutationObserver的回调
js执行时会区别这两个队列
- js引擎首先必须先执行所有初始化的同步代码。
- 每次准备取出一个宏任务前,都会将所有的微任务取出来一个个执行。