答题思路:
● 首先基本定义,宏任务和微任务
● 事件循环机制执行顺序
● async / await 执行顺序
一、什么是事件循环
事件循环机制就是一种同步编程模型,用于异步处理操作。当代码中遇到需要等待一部操作结果的语句时,js引擎不会一直等待,而是将该语句放入事件的队列中,并执行下一步语句。异步操作完成的时候,就会将其对应的事件加入到事件队列中。
🙋事件循环机制的组成部分:
事件队列:
用来存储事件的队列,包括鼠标点击、键盘输入、定时器等等
执行栈:
用来存储正在执行的代码的栈
宏任务:
指的是需要被放入事件队列中的任务,例如setTimeout / setInterval等
微任务:
指的是需要当前任务执行完成后立即执行的任务,例如Promise的then / catch / finally方法
事件循环机制的执行顺序
- 执行当前执行栈中的顺序
- 当执行栈是空的时候,事件循环会从事件队列中取出一个任务进行执行,该任务是宏任务
- 当宏任务执行完毕后,事件循环会检查是否有微任务需要执行,如果有会依次执行所有微任务,直到微任务队列是空
- 重复执行步骤2-3,直到事件队列和微任务队列均为空