将 Node.JS 中的简单同步函数转换为异步函数

2024-02-27

我有两个函数,第一个函数执行简单的加法,第二个函数执行减法。这些函数如何在 Node.JS 中异步执行?


我有两个函数,第一个函数执行简单的加法,第二个函数执行减法。这些函数如何在 Node.JS 中异步执行?

简而言之,你不能。您无法使同步代码在您的 Node.js 进程中真正异步运行。您可以影响时间(例如以setTimeout()将来的某个时候),但是当它运行时它仍然是同步的,而不是异步的。

编写异步新代码的唯一方法是:

  1. 使用已经异步的操作(例如fs.readFile() or http.get()).
  2. 在 Node.js 插件中使用异步接口编写您自己的本机代码。然后,如果需要,您可以使用实际的系统线程或非阻塞系统接口来实现您的代码。
  3. 将 javascript 代码移至您作为子进程运行的另一个 node.js 进程并传回结果。然后,您的 Node.js 进程可以独立于提供异步接口的子 Node.js 进程运行。

只有本机代码或由本机代码或其他进程支持的 Node.js 函数才能在 Node.js 中实现真正的异步。您不能采用纯 Javascript 代码(例如加法和减法函数),并在单个 Node.js 进程中将它们从同步转换为异步。没有什么神奇的方法可以做到这一点。根据定义,node.js 运行您的所有 Javascript在单个线程中。

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

将 Node.JS 中的简单同步函数转换为异步函数 的相关文章

随机推荐

  • 使用 where 和 offset fetch 子句的简单选择在 Oracle 中不起作用

    我正在尝试选择行where条件并且需要分页 所以我添加了Fetch with offset 使其动态 子句 但随后它给出了此错误 ORA 00933 SQL 命令未正确结束 位置 414 我的查询 SELECT up NAME upozil
  • 是否可以使用ggplot2中的facet_grid()让annotation_logtics()仅出现在一个子图上?

    我使用以下代码在 ggplot2 中使用facet grid 创建一个包含三个子图的图 day lt c 5 Aug 5 Aug 5 Aug 10 Aug 10 Aug 10 Aug 17 Aug 17 Aug 17 Aug station
  • [myArray addObject:[[objcBlock copy] autorelease]] 在释放数组时崩溃

    我编写了一个类来声明性地描述 UIView 动画序列 我的方法采用动画块的可变参数并将它们放入数组中 所以在我的循环中我想这样做 animations addObject block copy autorelease I first cop
  • 正则表达式匹配回句点或字符串开头

    我想匹配一个单词 然后获取它之前的所有内容 直到第一次出现一个句点或字符串的开头 例如 给定此字符串并搜索单词 regex s Do not match this Or this Or this either I like regex It
  • Elasticsearch 不返回单数/复数匹配项

    我正在使用 elasticsearch 的 php 库来索引和查找我的网站中的文档 这是创建索引的代码 curl XPUT http localhost 9200 test d index numberOfShards 1 numberOf
  • 如何在 SVG 中导出 PNG

    我在导出包含 PNG 图像的 SVG 时遇到一些问题 我在用着D3JS和以下代码 mysvg append image attr width 299 attr height 168 attr xlink href image png var
  • Passport.js 支持ajax 吗?

    我想用passport js进行ajax登录 我有设置 Passport js 的常用代码 route app post api auth login passport authenticate local login successRed
  • 协议“Line”只能用作通用约束,因为它具有 Self 或关联类型要求

    我正在快速使用协议 我认为它类似于其他语言中的 界面 我正在测试它如何处理变量 协议对我来说相当新 因为我从未见过带有非静态变量的接口 我创建了一个车站协议 protocol Station var id String get set va
  • 如果没有 .cs 文件,Web 应用程序将无法发布

    我有一个 asp net Web 应用程序项目 正在通过 Visual Studio 2013 中的 生成 gt 发布 来发布 我正在使用所选的预编译选项发布到文件系统 我的项目在打包 发布 Web 设置屏幕中选择了 仅运行此应用程序所需的
  • @Id 注解属性的 Kotlin 内联类

    在我的业务逻辑中 我必须处理很多实体 ID 所有这些 ID 都是类型String 这可能会导致混乱 尤其是当您将其中几个作为方法参数传递时 所以我考虑引入一点类型安全内联类 我知道 内联类在 v1 3 中仍然被标记为实验性的 然而 有没有人
  • 方向改变后的回调变为null

    我有一个FragmentActivity有两个选项卡 分别是ListFragments Each ListFragment有回调 回调的示例 回调在内部关联附加 method OnStatusUpdateListener mStatusUp
  • 删除阿拉伯语中的垃圾字符

    我需要从字符串中删除所有非阿拉伯字符 最终在堆栈溢出人员的帮助下 https stackoverflow com questions 6642341 remove garbage characters in utf 6643116 6643
  • 与 eclipse 项目相比,可运行 jar 运行速度太慢

    我从 eclipse 项目中提取了一个 jar 文件 但它运行速度太慢 大约需要二十分钟才能完成 而 eclipse 项目只需要几秒钟 我使用所有三种不同的选择导出了带有库处理的可运行 jar 我还导出了包含所有库处理选项的 jar 文件
  • 如何在 Yarn 上配置应用程序驱动程序自动重启

    来自 Spark 编程指南 要自动从驱动程序故障中恢复 用于运行流应用程序的部署基础架构必须监视驱动程序进程 并在驱动程序失败时重新启动驱动程序 不同的集群管理器有不同的工具来实现这一点 火花独立 火花独立 Spark应用程序驱动程序可以提
  • 无法创建迁移以将新列添加到表中:列名称无效

    我正在尝试向现有表添加一列 它只是一个字符串列 不涉及任何类型的键 这是我试图做的唯一更改 我正在使用 powershell 调用创建迁移 dotnet ef migrations add migration name context co
  • 我们如何在 TOMCAT 中生成堆栈跟踪?

    我们如何在 TOMCAT 中生成堆栈跟踪 我真正的问题是 TOMCAT 在执行某些库中定义的函数调用后停止 使用堆栈跟踪进行调试会很容易 您可以做很多事情 我假设下面您正在谈论 Java 堆栈跟踪 在Linux中 您可以通过执行kill 3
  • 将数据保存在 cakephp 中,同时具有多个关联和所属关联

    我知道这个问题在这里被问了很多次 但我也尽力遵循所提供的解决方案 当我学习 cakephp 时 一些解决方案似乎很难在代码中实现 我正在使用 cakephp 2 5 我想做的是创建一份附有一个或多个上传内容的问题报告 以下是我迄今为止所实施
  • EarlGrey - 如何检查屏幕上是否显示多个对象

    The EarlGrey文档says https github com google EarlGrey blob master docs api md earlgrey matchers that You must narrow down
  • 是否可以同步渲染dust.js模板?

    我正在尝试为客户端 HTML JS 模板系统编写一个适配器 以便在后台使用dust js 不幸的是 API 期望渲染操作同步发生 渲染的输出应该从 render 调用返回 Dust js 是异步的 并将渲染输出传递给回调函数 有没有办法解决
  • 将 Node.JS 中的简单同步函数转换为异步函数

    我有两个函数 第一个函数执行简单的加法 第二个函数执行减法 这些函数如何在 Node JS 中异步执行 我有两个函数 第一个函数执行简单的加法 第二个函数执行减法 这些函数如何在 Node JS 中异步执行 简而言之 你不能 您无法使同步代