当前位置:首页 > JavaScript

js eventloop实现

2026-02-01 05:35:07JavaScript

js eventloop实现

Event Loop 的基本概念

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

核心组成部分

  • 调用栈(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 的机制,可以更好地优化异步代码的执行顺序和性能。

js eventloop实现

标签: jseventloop
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现图片放大缩小

js实现图片放大缩小

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

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取…