JavaScript 内部原理:事件循环以什么间隔运行?

2024-01-07

这是一个关于 JavaScript 内部结构的问题。

假设我有 10 个异步任务,全部需要 x 秒才能运行。在等待响应时,脚本处于空闲状态。

JavaScript 引擎在后台询问“任务队列中是否有任何内容”。据我了解,这是一个循环。因此,事件循环。我知道在 Node 中这是用 Libuv 实现的。我读过这篇文章,其中解释了一些:https://nikhilm.github.io/uvbook/basics.html https://nikhilm.github.io/uvbook/basics.html

JavaScript 引擎是否对此事件循环的运行频率施加任何限制,以平衡应用程序的性能?它是否按设定的时间间隔运行?

如果我有什么不对的地方,请纠正我。我纯粹对这个事件循环运行的时间间隔感兴趣。


JavaScript 端本身没有循环。不过 libuv 中有一个。基本上 libuv 会等到最接近的计时器命中或发生 I/O 操作。然后它将在 C 中触发一个回调,该回调调用 Node 传递的 C++ 函数,然后触发 JavaScript 代码执行。

看一下这个演示文稿 http://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between,特别是从幻灯片 33 开始的部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 内部原理:事件循环以什么间隔运行? 的相关文章

随机推荐

  • 在此范围内未声明“pthread_setname_np”

    我在我的应用程序中创建了多个线程 我想为每个 pthread 分配一个名称 所以我使用pthread setname np它可以在 Ubuntu 上运行 但不能在 SUSE Linux 上运行 我用 google 搜索了一下 发现 np 的
  • Intellij IDEA 未检测到更改

    昨天 我重构了我的项目 并更改了包的布局 我将一些包移动到另一个包中 创建了新包等 但现在 当我尝试运行 JUnit 测试时 我得到了NoSuchMethodError重构后名称更改的方法 另外 当我更改方法中的其他代码时 IDEA 仍然运
  • 无法找到 com.facebook.katana.provider.platformprovider 和 com.facebook.wakizashi.provider.platformprovider 的提供商信息

    在我的 Android 应用程序中 我使用 FacebookDialog 我正在写下以下代码 在 Galaxy Note 3 Android 4 4 2 中 一切顺利 然而 在Experia SOL21 Android4 1 2 中却没有
  • 恢复 SQL Server 数据库之前等待连接关闭

    我有一个使用两个数据库的网络应用程序 DB1 用户执行 CRUD 创建 读取 更新 删除 操作 数据库 DB2 是位于另一台服务器上的只读数据库 我将其用于报告目的 我的 DB1 每小时都会保存事务日志 而在 DB2 上 我有一项工作需要在
  • 使用 RESTful URL 能给我带来什么?

    我一直在阅读有关 REST 的内容 并试图找出使用它的优势是什么 具体来说 REST 样式的 URL 相比于带有查询字符串的更典型的 GET 请求有什么优势 值得实现 为什么是这个网址 http www parts depot com pa
  • 减少 HTML

    我的网页中有以下 HTML Forum ul li Stack li li OverFlow li ul 正如您在下面看到的 我完美地列出了项目 但是之间存在固定的差距 ul and li 元素 有什么办法可以缩小这个差距吗 即附加屏幕中
  • 广度优先搜索:找不到路径,二维数组中到边界的最短路径

    我尝试编写一个 绕点 游戏 基本的游戏理念是 你必须在蓝点逃脱之前包围它 每放置一个障碍物 橙色点 蓝色点 玩家 就会向边界移动一步 如果你在他到达边界之前没有圈出蓝点 那么你就输了 游戏将重新开始 因此我必须做一个对 UIButton 的
  • 重命名二维数组每行中的键

    在如下所示的数组中 如何将 fee id 重命名为 id 输入数组 fee id gt 15 fee amount gt 308 5 year gt 2009 fee id gt 14 fee amount gt 308 5 year gt
  • 通过 Spring 在并行流中使用 JPA 对象

    我正在使用 JPA 开发 spring boot 应用程序 在代码中 我发现一个非常可疑的部分 它执行类似的操作 简化的示例 代码否则包含很多混乱 entityRepository findAll parallel The findAll
  • 从数组中删除 stdClass 对象

    我有一个如下所示的数组 数组 1 我需要从中删除 stdClass 如下面的数组所示 2 目前我正在使用 foreach 循环来执行此操作 是否有更好的方法可以在不循环的情况下执行此操作 阵列1号 array 3 0 gt object s
  • 语法“while IFS= read line”记录在哪里?

    为什么我看到的每个例子都有while IFS read line并不是while IFS read line 我以为name value command可能会设置一个局部变量 但是sentence hello echo sentence不起
  • 嗅探并显示 UTF-8 格式的 TCP 数据包

    我正在尝试使用 tcpdump 来显示在我的网络上流动的 tcp 数据包的内容 我有类似的东西 tcpdump i wlan0 l A A 选项将内容显示为 ASCII 文本 但我的文本似乎是 UTF 8 有没有办法使用 tcpdump 正
  • 有没有更简单的方法在Matlab中构造Mandelbrot集?

    下面显示的代码用于绘制曼德尔布罗特集 http en wikipedia org wiki Mandelbrot set 我认为我的代码对于构造有点冗余Matrix M In Python我知道有一种干净的方法可以做到这一点 M mande
  • 日期时间向上和向下舍入

    我一直在寻找合适的舍入机制 但我发现似乎没有什么正是我所需要的 我需要分别向上舍入和向下舍入 并且还需要在已经四舍五入的情况下考虑情况 我需要进行以下舍入 5 00 gt RoundDown gt 5 00 5 04 gt RoundDow
  • 使用 powerlaw 包对截止分布进行幂律拟合

    我目前正在尝试找到一种方法来计算 MLE 截止分布的幂律拟合 分布如下 正如您所看到的 我能够分别拟合整个分布 幂律拟合 和下限 exp fit 我没能弄清楚的是如何拟合分布的上限 例如 8 有什么办法可以做到这一点poweRlaw包还是任
  • 如何使用 Docker API Python 客户端构建镜像?

    我刚刚启动了 Docker Api 并探索了各个部分 但是我一直坚持使用 python 客户端使用 docker api 构建图像 实际上我无法理解如何为 docker 设置各种所需的参数客户端 images build 方法 请帮帮我 提
  • R:rvest - 不是正确的 UTF-8,表明编码?

    我正在尝试 Hadley Wickham 的 新 Rvest 套餐 我过去用过它 所以我希望一切都会顺利进行 但是 我一直看到这个错误 gt TV Audio Video Marca lt read html page source 1 e
  • 在Python中高效地搜索字符串列表中的字符串列表

    我有一个字符串列表和一个字符串列表 例如 L1 cat dog apple orange green red L2 cat red 如果 L1 i 包含 L2 中的任何项目 我需要放置这些对 用于在图中创建边 就像 在我的例子中 我需要这些
  • Hadoop 中的作业和任务调度

    当我阅读延迟公平调度时 我对 Hadoop 中的术语 作业调度 和 任务调度 有点困惑在这张幻灯片中 https people csail mit edu matei talks 2010 eurosys delaysched pdf 如果
  • JavaScript 内部原理:事件循环以什么间隔运行?

    这是一个关于 JavaScript 内部结构的问题 假设我有 10 个异步任务 全部需要 x 秒才能运行 在等待响应时 脚本处于空闲状态 JavaScript 引擎在后台询问 任务队列中是否有任何内容 据我了解 这是一个循环 因此 事件循环