【问题标题】:How to create custom asynchronous function in Javascript?如何在 Javascript 中创建自定义异步函数?
【发布时间】:2020-05-18 03:28:18
【问题描述】:

我知道要创建一个异步函数,我们只需要在其中调用一个异步函数,例如 setTimeout() 并传递一个回调。

但是如何在不使用任何预构建函数的情况下本地创建它呢?

我知道查询数据库的函数具有异步行为,它们如何在不使用 setTimeout() 之类的原始实现的情况下做到这一点?

【问题讨论】:

  • 您能否详细说明具体的用例以及您想从中实现什么?
  • @Bergi 我想了解如何构建一个可以调用且不会阻塞其余代码的代码。 (没有像数据库查询函数那样的 setTimeout)
  • 你可以用异步等待来做到这一点
  • @YoussefMohamed 我重复一遍(从我的回答中):你不能那样做。我假设您将“将代码放入工作进程”的解决方案算作“使用任何预构建函数”。

标签: javascript node.js asynchronous


【解决方案1】:

但是如何在不使用任何预构建函数的情况下本地创建呢?

你不能。

我知道查询数据库的函数具有异步行为,它们如何在不使用 setTimeout() 之类的原始实现的情况下做到这一点?

他们通常会使用网络或文件系统套接字连接到数据库,并且对于那些有内置的异步函数(在收到响应时调用回调等),它们是基于它们构建的。

特别是对于 node.js,当然也有可能向引擎本身写入一个addon,为 JavaScript 环境提供这种“本机异步”功能。

【讨论】:

    【解决方案2】:

    此类函数通常不是用 JavaScript 编写的。

    它们通常使用与运行时引擎相同的编程语言编写,然后插入其中并将 作为 JavaScript 函数公开。

    这就是为什么如果你在浏览器中运行XMLHttpRequest.toString(),你会得到"function XMLHttpRequest() { [native code] }",而不是函数的实际代码。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2019-12-29
      • 2015-11-18
      • 2018-09-14
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多