Node.js - 单线程,非阻塞?

2023-11-23

我正在学习 Node.js,并且我读到 Node.js 是单线程且非阻塞的。

我有很好的 JavaScript 背景,并且确实了解回调,但我不太了解 Node.js 如何成为单线程并在后台运行代码。这不是很矛盾吗?

因为如果 Node.js 是单线程的,它仍然只能同时执行一项任务。因此,如果它在后台运行某些内容,它必须停止当前任务以在后台处理某些内容,对吧?

这实际上是如何运作的?


对于 NodeJS 而言,“在后台”的真正含义是,事情会被放在待办事项列表中以供以后使用。每当 Node 完成它正在做的事情时,它就会从待办事项列表的顶部进行选择。这就是为什么做任何实际上是阻塞的事情都会毁掉你的一天。 “在后台”发生的所有事情(实际上只是在待办事项列表上等待)都会停止,直到阻塞任务完成。

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

Node.js - 单线程,非阻塞? 的相关文章

  • querySelector 搜索直接子级[重复]

    这个问题在这里已经有答案了 我有一些类似 jquery 的函数 function elem return gt someselector elem 问题是我怎样才能做同样的事情querySelector 问题是 gt 选择器中querySe
  • 玉石压痕错误

    因此 对于我的 Express 网站 我使用 jade 所以我决定尝试修改我的布局文件 以便我可以开始设计我的网站 我修改了原始布局代码 有效 但我开始在任何扩展布局的文件中出现缩进错误 如下所示 500 Error home kevin
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 使用 babel env 预设时,展开运算符出现语法错误

    我正在努力 现代化 meern io 入门样板 https github com Hashnode mern starter通过替换巴别塔es2015 and stage 0预设为env 然而 似乎env预设无法识别以下片段client m
  • 从 puppeteer PDF 中删除分页符?

    我目前正在尝试查看是否有一种方法可以删除我的 puppeteer PDF 中的分页符 因为我当前的 PDF 设置中的一些分页符正在以一种奇怪的方式切断文本 我正在谈论的内容的屏幕截图 我的傀儡代码 app get companyId pdf
  • 如何使用 Nextjs/React 将 JSON 对象导出到 Excel?

    我有一个检索 json 对象的端点 如下所示 data id 1 temaIndicador Indian codigo 001 observaciones Interactions Specialist tertiary Regional
  • 为什么 Node js 无法识别 ejs 的结束括号

    我正在使用express和ejs在node js中创建一个图片库 以下是我的 app js 的代码 var express require express var app express app set view engine ejs ap
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • 修复 Raphaël 路径节点上 Tipsy 工具提示的位置

    这是一个非常具体且有些复杂的问题 所以我设置了一个最小测试用例 http reveal dk 8080 revealit dk tipsytest 在阅读本文的其余部分之前 您可能应该先了解一下 我的页面显示悬停时突出显示区域的图像Raph
  • 如何在单击按钮时清除反应挂钩中的间隔

    我正在用反应钩子构建一个简单的计时器 我有两个按钮启动和重置 当我单击开始按钮时 handleStart 函数工作正常 计时器启动 但我不知道如何在单击重置按钮时重置计时器 这是我的代码 const App gt const timer s
  • 为某个时刻添加持续时间 (moment.js)

    时刻版本 2 0 0 阅读文档后 http momentjs com docs manipulating add 我认为这很简单 Chrome 控制台 var timestring1 2013 05 09T00 00 00Z var tim
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • JavaScript setTimeout 和更改系统时间会导致问题

    我注意到如果我设置setTimeout未来1分钟 然后将我的系统时间更改为过去5分钟 setTimeout功能将在 6 分钟后触发 我这样做是因为我想看看夏令时系统时钟更改期间会发生什么 我的 JavaScript 网页使用setTimeo
  • jQuery UI 对话框 - 关闭后无法打开

    我有一个问题jquery ui dialog box https jqueryui com dialog 问题是 当我关闭对话框然后单击触发它的链接时 除非刷新页面 否则它不会再次弹出 如何在不刷新实际页面的情况下回调对话框 下面是我的代码
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 在引导程序中以编程方式更改选项卡窗格选项卡

    我使用的选项卡窗格定义为 ul class nav nav tabs li a href personal Personal Information a li li class active a href contact Contact a
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • C 中的结构体数组

    我正在尝试创建一个结构数组以及指向该数组的指针 我不知道数组有多大 所以它应该是动态的 我的结构看起来像这样 typedef struct stats t int hours 24 int numPostsInHour int days 7
  • 如何将 TabPage 的标题文本设为粗体?

    我在 C Windows 应用程序中有一些 tabControl 它有一些标签页 有谁知道如何使 tabPage 文本变为粗体 你需要处理DrawItem事件的TabControl手动绘制标题 笔记 DrawMode受影响的控制应设置为Ta
  • 您在正则表达式中使用过 Perl 5.10 回溯控制动词吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 您在正则表达式中使用过 Perl 5 10 回溯控制动词吗 他们帮助你解决了哪些问题 正如背景 我做了一些摆弄 但我无法得到任何真正有用的结果 作为比较 当我开始了解 gt 分组确实如此
  • 安装 Pyspark 时遇到问题

    我想使用 pyspark 在本地计算机上运行 Spark 从here我使用命令 sbt sbt assembly bin pyspark 安装完成 但是pyspark无法运行 导致出现以下错误 完整 138 spark 0 9 1 comp
  • PDOexecute($input_parameter) 防止 SQL 注入作为 bindParam/bindValue?

    Does execute input parameter 防止 sql 注入 就像bindParam bindValue 如果答案是肯定的 bindParam bindValue execute 不会受到任何 sql 注入攻击吗 或者我需要
  • JavaScript:递归深度比较:对象和属性

    今天我读完了Ch 4 在 Eloquent JS 中 我正在努力理解如何在对象及其属性之间执行深度比较 特别是通过使用递归调用 我知道我下面的解决方案非常幼稚而且有点笨重 但我正在努力理解我仍在学习的所有这些新事物 编程时间还不到一个月 如
  • 用于基于 Web 的管理界面的免费表单、图标、样式等集

    是否有任何免费的表单 图标 样式 图像等用于构建基于 Web 的管理界面 如果是 哪个最好 一个特别常见的选择是Silk 这是一套非常全面的免费套装 还有丝绸伴侣1
  • 如何清除合并单元格的内容

    我正在尝试清除单元格中的内容 但其中一些已合并 因此我收到错误 1004 我们不能对合并单元格这样做 For l 4 To 9 If ws Cells j l Interior ColorIndex 19 Then ws Range j l
  • PHP - 替换 标签并返回 src

    使命是取代所有 img 给定字符串中的标签 div 标签和src属性作为内部文本 在寻找答案时我发现了类似的问题 result this is something with an image in it 问题 如何升级脚本ant得到这个结果
  • 同名的 Rails 迁移

    人们如何优雅地应对这个问题呢 我进行了一次迁移 创建了一个表 然后又进行了一次迁移以删除该表 现在我想重新引入它 问题是我不能 因为它们具有相同的名称 如果我理解正确的话 Rails 只会抱怨迁移名称only 嗯 迁移名称对其功能没有影响
  • 使用 for-each 循环时 LinkedList 中出现空指针异常

    我遇到了非常奇怪的 Java 行为 我不知道这是一个错误 还是 我错过了什么吗 代码只是简单地遍历stateStack LinkedList 列表并销毁所有状态 public void clearStates LogFactory getL
  • 如何在 Java 项目中包含 SIGAR API

    我是 Java 新手 所以我不知道在我必须使用 Sigar 类的项目中向谁获取下载的 zip 文件 hyperic sigar 1 6 4 zip 我已经尝试导入 Sigar Jar 文件 但问题是 sigar 中每个类的源都是未知的 所以
  • Xamarin 表单中的占位符文本对齐方式

    我不知道如何在输入框中放置占位符文本 我有一个非常大的输入框 想将占位符文本放在顶部
  • Google 查看器经常打开空白页

    Why Google Viewer有时是打开空白页而不是打开 PDF 文件 我可以使用模拟它this代码 并不是每次都会发生 需要单击谷歌浏览器按钮几次 我可以在 Edge 和 Chrome 上模拟它 请注意选项卡标题 Sem titlul
  • 空cocos2d 2.0(iPhone)中编译错误

    当我尝试在 xcode4 中编译新的 cocos2d box2d 项目时 我收到如下错误消息 Users bla bla Cocos2d 测试 Cocos2d 测试 libs cocos2d CCDirector h 32 9 致命错误 找
  • 使用 Java EE API 替换已弃用的 JPMS 模块

    Java 9 弃用了六个包含 Java EE API 的模块他们是将被删除 soon java activation with javax activation package java corba with javax activity
  • 在一行中创建并传递表值参数

    使用 SQL Server 2012 是否可以无需声明表值参数 TVP 只需将其传递到存储过程中 下面是一个非常简单的存储过程 SP 示例 它采用 TVP 和执行该 SP 的工作示例 其中我必须声明 TVP 填充它 然后将其传递到 SP 我
  • 最好的开源 Java 图表库是什么? (jfreechart 除外)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 为什么没有更多易于使用的
  • Java 错误 - 软件导致连接中止:recv 失败

    完整的错误是 java net SocketException Software caused connection abort recv failed at java net SocketInputStream socketRead0 N
  • Node.js - 单线程,非阻塞?

    我正在学习 Node js 并且我读到 Node js 是单线程且非阻塞的 我有很好的 JavaScript 背景 并且确实了解回调 但我不太了解 Node js 如何成为单线程并在后台运行代码 这不是很矛盾吗 因为如果 Node js 是