当前位置: 首页 > 网络应用技术

一篇文章带您了解浏览器的事件循环机制

时间:2023-03-07 19:24:00 网络应用技术

  事件队列:异步代码的执行不等待其返回结果,而是直接悬挂在此时间中继续执行堆栈,因为异步事件返回事件queueimmastecmed tocemped execrack the callback,但继续等待等待在等待中的任务。当前的执行战争。主线程为空,然后返回事件队列以查找如果有任何任务,是否有任务。

  问:为什么需要微型任务?

  答:为了在事件队列中准确控制事件并加快执行高优先事件(如果没有微任务,例如事件和浏览器渲染事件将被任意添加到事件队列中,很难控制))

  宏任务

  微型任务

  异步任务的返回结果将放在任务队列中,以决定根据事件类型的类型将其放在微型征服或宏任务队列上

  当当前执行堆栈为空时,您将首先检查是否需要执行微任务队列

  当执行当前执行堆栈时,它将立即处理所有微型任务队列中的事件,然后转到宏任务队列以取出事件。在相同的事件周期中,Micro -Task将始终执行宏任务

  摘要:首先执行宏任务,然后执行由宏任务生成的微任务。如果执行了微任务,则会生成其他任务(Micro -Task继续执行Micro -Task宏任务,并将其放在宏任务中),请执行下一轮周期

  第一轮事件周期

  第二轮事件周期

  第三轮事件周期

  在这一点上,所有事件的输出为:“ 1” - “ p2” - “ end” - 3-“ pro time” - “ second” - 然后“ T1” - “ pro time” - “ pro time”

  我相信,当您看到这一点时,每个人都应该对事件周期有深刻的了解。在本文中,请在评论区域指出

  *文章参考[:js*]中的事件周期机制(https://segendfault.com/a/1190000022805523#comment-))

  原始:https://juejin.cn/post/709714299004489102