事件队列:异步代码的执行不等待其返回结果,而是直接悬挂在此时间中继续执行堆栈,因为异步事件返回事件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