当前位置: 首页 > news >正文

分析实例,学习了解浏览器事件循环机制

实例

 (() => {console.log(1);setTimeout(() => {console.log(2);}, 0);new Promise((resolve, reject) => {resolve()console.log(3);}).then(() => {console.log(4);});console.log(5);})();

执行上述箭头函数得到的答案: 1 3 5 4 2

分析学习:

  1. 代码运行是从上到下执行的;首先输出1
  2. 浏览器的执行机制,promise的机制会早于setTimeout,即使setTimeout的延迟是0s;而 resolve(), console.log(3);是同步调用;那么第2个输出就是3;
  3. promise的知识点,当有resolve()才会继续调then函数的事物,那么已知4要3晚。

---------》那么当前的排序应该是 1 3 4 2

  1. new Promise((resolve, reject) => {
    resolve()
    console.log(3);
    })是和 console.log(5);是同一级别;意思是先指向Promise的同步部分,就会马上执行输出5

最终答案: 1 3 5 4 2

官方解释

浏览器事件循环机制

同步代码 → 直接执行。
微任务(MicroTask):
Promise.then / MutationObserver / queueMicrotask
在当前调用栈清空后立即执行。
宏任务(MacroTask):
setTimeout / setInterval / I/O / UI Rendering
必须等待微任务队列清空后才会执行。
这样设计是为了保证高优先级的任务(如 Promise)能更快执行,而低优先级的任务(如 setTimeout)稍后执行。

相关文章:

  • 渗透实战:利用XSS获取cookie和密码
  • AXI4-Stream Clock Converter IP
  • if的简化书写,提高执行效率
  • Trae Builder 模式:从需求到全栈项目的端到端实践
  • XSS (Reflected)-反射型XSS
  • 【图像恢复算法】 ESRGAN Real-ESRGAN的配置和应用
  • 【Pytorch】(1)Pytorch环境安装-①创建虚拟环境
  • Spring AI Chat Memory 指南
  • transformer demo
  • 东土科技参与国家重点研发计划 ,共同研发工业智控创新技术
  • 【Linux】进程创建、终止、等待、替换
  • 《单光子成像》第四章 预习2025.6.13
  • Vue里面的映射方法
  • python+django/flask厨房达人美食分享系统
  • 英语—四级CET4考试—规律篇—从历年真题中找规律—仔细阅读题—汇总
  • 秘籍分享:如何让ZIP下载的源码拥有Git“身份证”
  • Kubernetes安全机制深度解析(三):准入控制器
  • Cilium动手实验室: 精通之旅---26.Cilium Host Firewall
  • ffmpeg覆盖区域
  • 准确--使用 ThinBackup 插件执行备份和恢复
  • 玉林网站建设/网站搜什么关键词
  • 免费做宣传单页的网站/怎么做seo
  • 化妆网站源码/学seo需要多久
  • 微信里的小程序怎么制作方法/运营推广seo招聘
  • 网站跳出率怎么算/网站推广seo优化
  • 电子商务网站调研报告/微信搜一搜怎么做推广