Event
Loop

JS 事件循环演示器

粘贴一段含 setTimeout / Promise / async-await 的代码,工具静态解析宏任务与微任务,按事件循环规则生成时序动画与队列快照,直接给出控制台输出顺序。内置经典面试例题,代码只在本页解析、绝不执行,不上传服务器。

1代码片段

支持顶层语句、setTimeout 回调、Promise.then 链、queueMicrotask、requestAnimationFrame、async 函数声明与调用。

动画速度 0.9s/步

2执行时序轨道

点亮的卡片即当前执行步骤,灰色为尚未到达的时序。

解析代码后,这里会逐条点亮事件循环时序

场景预设与分步回放

8 个经典异步场景一键载入;可暂停、逐步前进或后退,右侧 SVG 状态环同步显示当前阶段与三色队列余量。

0 / 0
未开始 EVENT LOOP 同步 微任务 宏任务 渲染帧
当前阶段未开始
微任务余量0
宏任务余量0
渲染帧余量0
同步微任务宏任务渲染帧

方案管理 · 数值对比 · 导出

调好的参数可存成方案随时载入,也能生成可分享链接;结果里的数值列会自动画成对比图,并支持导出 CSV / JSON。

最近方案 暂无

🔄口径说明与常见误填

口诀:先同步,再微任务,后宏任务。

宏任务
setTimeout、setInterval、I/O、事件回调等,每轮循环只取出一个执行
微任务
Promise.then、queueMicrotask、await 后续,在当前任务结尾一次性清空
渲染帧
requestAnimationFrame 回调,在浏览器下一次重绘之前执行
同步代码
顶层脚本进调用栈就立即跑完,永远排在所有异步任务之前
静态解析
工具只读代码文本做标注,不会 eval 执行,不产生任何副作用

这个工具解决什么问题

这个工具把粘贴进来的含 setTimeout、Promise、async/await 的 JS 片段做静态解析,逐条标注为同步、微任务、宏任务或渲染帧,按事件循环规则生成时序动画与队列快照,并直接给出控制台打印次序。内置经典面试例题,代码只在本页解析、绝不执行,也不上传服务器。

分析异步顺序的三条铁律

① 同步先跑完:顶层代码执行完毕、调用栈清空之后,才开始处理任何异步队列。

② 微任务清空一整串:每个宏任务结束后会把微任务队列全部清空,清空过程中新入队的微任务也在同一轮跑完。

③ 宏任务一次只取一个:每轮事件循环只从宏任务队列取出一个回调,await 会把函数体拆成前后两半,后半段进微任务。

怎么用

  1. 第 1 步 · 粘贴代码片段
    把面试例题粘进输入框,支持顶层语句、setTimeout 回调、Promise.then 链、queueMicrotask、requestAnimationFrame 与 async 函数。
  2. 第 2 步 · 点解析并演示
    工具给每条语句打上类型标签,时序轨道逐条点亮,三色队列面板实时显示微任务、宏任务与渲染帧的剩余任务。
  3. 第 3 步 · 调整动画速度
    拖动速度滑块改变每一步节奏,关键轮次的队列变化更适合讲解和回放。
  4. 第 4 步 · 对照输出顺序汇总
    演示结束后页面底部按执行时序列出控制台打印次序,直接核对答案。

更新记录

  • v1.0 2026-11-02
  • 2026-11-02 上线首个版本
  • 2026-11-02 完善结果展示

常见问题

事件循环执行顺序例题怎么做?
口诀是:先同步,再微任务,后宏任务。把例题代码粘进本页,工具会把每条语句标成同步 / 微任务 / 宏任务 / 渲染帧,逐条点亮时序轨道,直接对照答案。
Promise 和 setTimeout 谁先执行?
Promise.then 属于微任务,setTimeout 属于宏任务。同一轮里同步代码跑完后会先清空整个微任务队列,才从宏任务队列取出一个 setTimeout 回调执行。
宏任务、微任务区别图解怎么看?
微任务(Promise 回调、queueMicrotask、await 后续)在当前任务结尾立即执行;宏任务(setTimeout、setInterval、I/O、事件回调)要等下一轮循环。本页队列面板用三色卡片实时展示两个队列的余量。
JS 异步输出顺序怎么分析?
按执行上下文出栈、微任务清空、取一个宏任务的顺序推演即可;async 函数注意 await 之前的代码是同步,await 之后的部分相当于挂进微任务。本工具会自动在 await 处拆分时序。
有 event loop 在线演示工具吗?
就是本页。它只做静态解析、不 eval 用户代码,因此不会执行任何副作用,全程在浏览器本地完成,可放心粘贴面试真题。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码
👣 做完这一步,顺便看看
🏛️ 凯撒密码解密 凯撒密码解密 :1~25 位位移加解密、ROT13 一键转换… → 🔤 乱码转换器在线修复 乱码转换器在线 :把“锟斤拷”“�”“涓枃”“😀”等乱… → 📸 代码截图美化工具 在线代码转图片工具:粘贴或输入代码(支持 JavaScrip… → 🎨 WCAG 对比度检测工具 在线颜色对比度检测工具:输入前景文字色与背景色(支持 #he… →
全部工具 →