- 执行主代码块,如果是同步代码,按顺序直接进入主线程执行。
- 如果是promise的异步,就按顺序放到微事件队列里面。
- 如果是settimeOut的异步,就按顺序(要考虑计时器的时间谁先到谁先放入)放到宏事件队列里面。计时器开启后,并不是是到点就开始执行,要等上一个宏任务完成后,才执行。计时器只能决定你啥时候进入队列,不能决定你啥时候进入主线程执行。
- 同步代码全部执行完后,微事件队列的事件就会按顺序进入主线程。
- 等微事件队列全部执行完。这一次的宏任务结束。
- 开启下一个宏任务,即从宏事件队列中的第一个开始执行,又是一个宏任务的开启。