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

JavaScript对Eventloop的透彻理解

时间:2023-03-06 13:06:44 网络应用技术

  在正式研究之前,您需要解决一些问题:

  计算机字段中的同步完全与我们真实社会的同步和异步相反。同一时间;异步是不同的。但是,与计算机中的现实存在某些差异。

  天气很冷。我刚早上醒来,想喝点热水以使我的身体变暖,但是这一天每天贪婪的黑色996。当我回来时,我睡着了,太累了,晚上睡着了。

  早上太冷了,我不禁躺在床上一会儿。清理的时间紧密,我等不及要打开水,所以我利用它洗净并打包了自己。洗完后,水煮沸后,喝温暖的热水很舒服呢

  完成,开始996的新日,工作!

  燃烧的水和洗涤是同时进行的,这是计算机中的异步。

  计算机中的同步是连续动作。在上一步未完成之前,下一步将被阻止。直到最后一步完成之前。

  它确实是一种单个线程语言,但是浏览器是多线程的。异步任务是通过浏览器的线程和执行机制实现的。例如,它是通过借助浏览器计时器来触发线程计时器来实现的。

  事件循环的执行过程如下:

  让我们一起看看一个示例,以熟悉上述过程。

  让我们继续看一个案例:

  根据上述学习:您可以轻松获得案例的打印结果:2、4、1、3。

  承诺定义部分是一项同步任务,回调部分是异步任务

  案例代码在控制台中运行,但最终回报结果是出乎意料的:

  我只是看到了这个结果。我的第一种感觉是功能1触发的速度太慢,使其加入了比

  因此,我修改了回调时间0(浏览器的最小触发时间),但结果仍然更改。

  然后,这意味着优先考虑异步任务。

  除了将任务分为同步任务和在广义上的异步任务外,异步任务也更细微地分配了。同步任务进一步分为微型任务和宏任务。

  宏任务和微任务具有其自己的任务队列,即宏任务队列和微征服队列。

  在了解了宏任务和微型启用之后,我们将学习执行宏任务和微任务的顺序。

  更新执行订单图:

  根据上述学习,重新分析当前情况:

  有关分析过程,请参见下图:

  在文章的最后,可以测试一些经典的访谈问题。