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

为什么比宏任务更早的微任务执行顺序?

时间:2023-03-08 17:37:03 网络应用技术

  获得UL标签后,我们会使用Settimeout和Promise。

  此时,问题是吗?JS不是单个线程,为什么以后要执行承诺?

  我们都知道JS是一种单语言。JS代码将一一实施。ESSENCETHIS是不合理的,因此我们有一个特殊的队列来存储这些任务(例如:DOM事件,计时器,网络请求),这些任务也称为异步任务。

  例如,让我们举个例子,例如,您和您的朋友共有五个人在同一天加入字节。当您通过In -Service程序时,小姐的人员会为您提供一份时间的表格,因此此操作是一个单线式操作。由于小姐的人员将按顺序一步地发送桌子,然后让您填写信息,那么,如果您想等待第一个人填写完成,然后是第二人称,这是不合理的。将其交给它是合理的,因此与JS相对应,并给您桌子供您填写在里面。这是异步任务。那么,如果您完成写作呢?一段时间后,人员小姐会问,无论谁完成了表格,那么这种行为与Eventloop机制相对应。该机制将不断询问异步队列中是否有任何任务。它将推动将任务完成的代码转到主线程以执行相应的回调函数。如果没有,他将继续询问是否有时间任务,就像永久动机一样

  如上图所示,JS代码和行在主线程中执行。当涉及异步时,它将被“录制”,将其放在异步队列中,然后等待时间成熟(例如计时器时间到了,网络请求又回来了),然后将返回。就像永久动机

  我们已经了解了上面执行异步任务的时机,因此在异步任务中,它被分为宏任务和Micro -tasks

  宏任务

  微型任务

  因为当执行主线程的代码时,将在事件循环执行之前先尝试DOM渲染。目前,Micro任务是在DOM渲染之前执行的。DOM渲染完成后,将执行宏任务。文章开头的代码的说明,比宏任务更早地执行微任务!IntersectionStimentertersection在我们的最终图标如下如下

  JS代码(事件循环)的执行顺序和规则,如果有问题,我希望您可以指出讨论和学习,谢谢!