简介:学习事件循环的 macrotask 和 microtask 和抛出异常后 JS 引擎的工作
事件循环
|
|
浏览器只有一个事件循环(Event Loop),但可以有多个队列,每个队列的优先级不一样。浏览器先执行一个 macrotask,然后执行所有 microtask
- macrotask 队列:整个脚本,setTimeout
- microtask 队列:then
- 整个脚本在 macrotask
- setTimeout 推入 macrotask
- console.log(1)
- resolve 导致 then 推入 microtask
- console.log(2)
- console.log(3)
- 脚本执行完成毕,执行 microtask
- console.log(5)
- 执行下一个 macrotask
- console.log(4)
异常
|
|
异常只是从当前函数中退出,但是引擎会继续工作(以前还以为抛出异常后,引擎就不响应了呢)