09- 事件循环

131 阅读1分钟

一、事件循环

一、js是单线程的

JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程

![image-20221126150902887](/Users/jirongliang/Library/Application Support/typora-user-images/image-20221126150902887.png)

二、JS引擎通过事件循环机制分别执行同步任务和异步任务

异步任务包括宏任务和微任务

宏任务(macrotask)微任务(microtask)
是发起的宿主(Node、浏览器)JS引擎
具体时间1. script(可以理解为外层同步代码)
2. setTimeout/setInterval
3. UI rendering/ UI事件
4. postMessage, MessageChannel
5. setImmediate, I/O(node.js)
1. Prromise
2. MutaionObserver
3. Object.observe(已废弃;Proxy对象)
4. Process.nextTick(node.js)
谁先运行
会触发新一轮Tick吗不会