我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么是​事件循环event loop

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么是​事件循环event loop

这篇文章给大家介绍什么是事件循环event loop,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

什么是​事件循环event loop

事件循环event loop。

一个老生常谈的问题,之所以拿出来说,推荐的原因在于:

通过几张动图的形式,就把这个过程描述清楚了,太有趣了。

为什么需要它

JavaScript是单线程的:一次只能运行一个任务。通常,这没什么大不了的,但是现在想象一下您正在运行一个耗时30秒的任务。在此任务中,我们等待30秒才能进行其他任何操作(默认情况下,JavaScript在浏览器的主线程上运行,因此整个用户界面都被卡住了)。

这样子的体验是不能接受的,你不能把时间花在这么一个迟钝的网站。

幸运的是,浏览器为我们提供了JavaScript引擎本身不提供的一些功能:Web API。这包括DOM  API,setTimeout,HTTP请求等。这可以帮助我们创建一些异步的,非阻塞的行为。

初次见面

当我们调用一个函数时,它会被添加到一个叫做调用栈的东西中。调用堆栈是JS引擎的一部分,这与浏览器无关。它是一个堆栈,意味着它是先入后出的(想想一堆薄饼)。当一个函数返回一个值时,它被从堆栈中弹出。

什么是​事件循环event loop

流程图1

响应函数返回一个setTimeout函数。setTimeout是由Web  API提供给我们的:它让我们在不阻塞主线程的情况下延迟任务。我们传递给setTimeout函数的回调函数,箭头函数()=> { return 'Hey'  }被添加到Web API中。同时,setTimeout函数和response函数被从堆栈中弹出,它们都返回了它们的值!

什么是​事件循环event loop

流程图2

在Web  API中,定时器的运行时间与我们传递给它的第二个参数一样长,即1000ms。回调并不立即被添加到调用栈中,而是被传递到一个叫做队列的东西中。

什么是​事件循环event loop

流程图3

这可能是一个令人困惑的部分:这并不意味着回调函数在1000ms后被添加到callstack(从而返回一个值)!它只是在1000ms后被添加到队列中。但这是一个队列,该函数必须等待轮到它!

揭开面纱

现在是我们一直在等待的部分,是时候让事件循环完成它唯一的任务了:将队列和调用栈连接起来。如果调用栈是空的,那么如果所有先前调用的函数都已经返回了它们的值,并且已经从栈中弹出,那么队列中的第一个项目就会被添加到调用栈中。在这种情况下,没有其他函数被调用,也就是说,当回调函数成为队列中的第一项时,调用栈是空的。

什么是​事件循环event loop

流程图4

回调被添加到调用堆栈,被调用,并返回一个值,然后被从堆栈中弹出,如图:

什么是​事件循环event loop

流程图5

跑个demo

其实我看完这些动图后,是很能理解作者思路滴,不过,我还是建议初学者,可以跑个例子看看,下面是一个不错的例子:

const foo = () => console.log("First"); const bar = () => setTimeout(() => console.log("Second"), 500); const baz = () => console.log("Third");  bar(); foo(); baz();

虽然看起来很简单,嗯,可以尝试搞一下:

打开我们的浏览器,跑一下上面的代码,让我们快速看一下在浏览器中运行此代码时发生的情况:

什么是​事件循环event loop

关于什么是事件循环event loop就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么是​事件循环event loop

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Web前端Tips:JS的事件循环(Event Loop)

JavaScript事件循环是一种处理异步事件和回调函数的机制,它是JavaScript实现异步编程的核心。它在浏览器或Node.js环境中运行,用于管理任务队列和调用栈,以及在适当的时候执行回调函数。

Node.js事件循环(Event Loop)和线程池详解

Node的“事件循环”(Event Loop)是它能够处理大并发、高吞吐量的核心。这是最神奇的地方,据此Node.js基本上可以理解成“单线程”,同时还允许在后台处理任意的操作。这篇文章将阐明事件循环是如何工作的,你也可以感受到它的神奇。
2022-06-04

JS 中的 Event Loop 是什么?

JS 运行机制是单线程,当有多个异步任务要同时执行,并不能并发执行,必须让优先级高的任务执行完才能执行后面的。如果正在执行的任务比较耗时,会导致后面的任务被阻塞。

Node.js事件循环是什么

本文小编为大家详细介绍“Node.js事件循环是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js事件循环是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是事件循环首先我们需要了解一下最基
2023-07-04

nodejs事件循环是什么

这篇文章主要讲解了“nodejs事件循环是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs事件循环是什么”吧!我们都听说过 JavaScript 和 Node.js 是单线程的
2023-07-04

Node的事件循环是什么

这篇文章主要介绍“Node的事件循环是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node的事件循环是什么”文章能帮助大家解决问题。一、什么是事件循环一句话:事件循环是Nodejs处理异步操作
2023-07-05

Node事件循环机制是什么

这篇文章主要介绍“Node事件循环机制是什么”,在日常操作中,相信很多人在Node事件循环机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node事件循环机制是什么”的疑惑有所帮助!接下来,请跟着小编
2023-07-05

oracle中loop循环使用的方法是什么

在Oracle中,可以使用PL/SQL语言编写循环控制结构,其中包括三种主要的循环语句:LOOP、WHILE和FOR。其中,LOOP语句可以无限循环执行一段代码块,直到遇到EXIT条件或者显式中断循环,示例如下:DECLAREi NUMB
oracle中loop循环使用的方法是什么
2024-04-09

JavaScript事件循环的原理是什么

今天小编给大家分享一下JavaScript事件循环的原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。理解 JavaS
2023-07-04

Node.js中事件循环的机制是什么

本篇内容介绍了“Node.js中事件循环的机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先看一个demo:setTimeout((
2023-06-17

编程热搜

目录