JavaScript 笔记(二)事件循环机制
一、事件循环机制
1. 定义:事件循环是 JavaScript 中一种重要的异步执行机制。
2. 作用:管理和协调各种异步任务的执行顺序,保证 JavaScript 代码的执行顺序和预期一致。
3. 组成部分:
3.1 主线程(调用栈):执行任务;
3.2 任务队列:存放异步任务;
3.3 事件循环线程:检查任务队列里面的异步任务,有的话将异步任务调入主线程执行。
4. 任务队列:
4.1 宏任务队列:setInterval()、setTimeout()、setImmediate()、ajax、事件绑定;
4.2 微任务队列:new Promise() 后的 then 与 catch 函数、new MutaionObserver()、process.nextTick(Nodejs)。
5. 执行过程:
5.1 初始的同步任务可以看作是一次宏任务的执行;(实际上不是宏任务)
5.2 宏任务执行完毕,事件循环线程自动检查【微任务队列】并将所有检查到的 微任务 调入主线程执行;(若检查无微任务,则直接去检查宏任务队列)
5.3 所有微任务执行完毕,事件循环线程自动检查【宏任务队列】并将检查到的 宏任务 调入主线程执行;(若无宏任务,任务队列为空)
5.4 重复 5.2,5.3 步骤,直至任务队列为空的过程称之为事件循环。
6. 注意点:
6.1 主线程中执行 任务 的时候会将遇到的 异步任务 添加到任务队列中;(宏任务进入宏任务队列,微任务进入微任务队列)
6.2 微任务队列 可以看作是 主线程执行的任务 中的随身携带的任务小袋子,当主任务完成之后,自然也要清空任务小袋子。
引用一下 @恰巧喜欢 大佬的图: