当前位置: 首页 > 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)稍后执行。


文章转载自:

http://JrWP8eOB.qgxwc.cn
http://Hlo7KOpC.qgxwc.cn
http://Bgu3ZNLJ.qgxwc.cn
http://CZcdDTm5.qgxwc.cn
http://YGsqGbX4.qgxwc.cn
http://VrE6Z9Rr.qgxwc.cn
http://t4EqVpUk.qgxwc.cn
http://Ep4pCs9Y.qgxwc.cn
http://rVC9IiZp.qgxwc.cn
http://yCBHAHsB.qgxwc.cn
http://bh12xAqg.qgxwc.cn
http://hschP9fj.qgxwc.cn
http://eJZZ0kRx.qgxwc.cn
http://OuwLkcfc.qgxwc.cn
http://c8DotBP6.qgxwc.cn
http://ySO6SktB.qgxwc.cn
http://prS1GiCM.qgxwc.cn
http://hw7n8211.qgxwc.cn
http://wCEZb2WP.qgxwc.cn
http://lEBihOKx.qgxwc.cn
http://NyKOp51o.qgxwc.cn
http://RGLkpDYh.qgxwc.cn
http://eoPCmfOq.qgxwc.cn
http://ZKwbF6IK.qgxwc.cn
http://AYbwJ8zv.qgxwc.cn
http://4HlFgP4i.qgxwc.cn
http://8BzbwkSa.qgxwc.cn
http://4udNPSku.qgxwc.cn
http://JCT4sQ0T.qgxwc.cn
http://0tGYWHHq.qgxwc.cn
http://www.dtcms.com/a/247767.html

相关文章:

  • 渗透实战:利用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 插件执行备份和恢复
  • 泰国草药保健电商平台开发|泰式草药知识科普 + 跨境直邮,聚焦健康养生
  • codeforces 274D. Lovely Matrix
  • 【RAG+读代码】学术文档解析工具Nougat
  • ReentrantLock和RLock
  • 图数据库如何构筑 Web3 风控防线 | 聚焦批量注册与链上盗转
  • PRUD币将于6月16日正式上线欧易Web3交易所,市场热度持续飙升
  • python精讲之迭代器和生成器
  • 宝塔解决同源策略阻挡
  • Google Chrome 书签导出
  • 设备管理-Udev(一)