当前位置:首页 > JavaScript

js eventloop实现

2026-02-01 05:35:07JavaScript

js eventloop实现

Event Loop 的基本概念

JavaScript 的 Event Loop 是一种机制,用于处理异步任务和事件回调。它基于单线程模型,通过任务队列(Task Queue)和微任务队列(Microtask Queue)来调度任务执行顺序。

js eventloop实现

核心组成部分

  • 调用栈(Call Stack):用于执行同步代码,遵循先进后出(LIFO)原则。
  • 任务队列(Task Queue):存放宏任务(如 setTimeoutsetInterval、I/O 操作)。
  • 微任务队列(Microtask Queue):存放微任务(如 Promise.thenMutationObserver)。

执行流程

  1. 同步代码进入调用栈执行,遇到异步任务时,将回调函数注册到对应的队列。
  2. 调用栈清空后,优先检查微任务队列并执行所有微任务。
  3. 微任务队列清空后,从任务队列中取出一个宏任务执行。
  4. 重复上述过程,形成事件循环。

代码示例

console.log("Start"); // 同步任务

setTimeout(() => {
  console.log("Timeout"); // 宏任务
}, 0);

Promise.resolve().then(() => {
  console.log("Promise"); // 微任务
});

console.log("End"); // 同步任务

输出顺序

Start  
End  
Promise  
Timeout

关键点

  • 微任务优先级高于宏任务。
  • process.nextTick(Node.js)和 MutationObserver 的优先级高于普通微任务。
  • 避免长时间运行的同步代码阻塞事件循环。

常见宏任务与微任务

  • 宏任务setTimeoutsetIntervalrequestAnimationFrame、I/O。
  • 微任务Promise.thenqueueMicrotaskMutationObserver

通过理解 Event Loop 的机制,可以更好地优化异步代码的执行顺序和性能。

标签: jseventloop
分享给朋友:

相关文章

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…