【问题标题】:Node js wrap async functionNode js包装异步功能
【发布时间】:2013-11-11 23:30:48
【问题描述】:

我正在实现一个具有函数的 API:

get(url)

它返回一个响应对象,即没有回调。我发现的 Http 模块使用回调实现了节点样式的异步函数。我尝试使用 Fibers 等多种方式等待异步函数返回。Fibers 解决了 Fiber 内的问题,但在我的情况下不能使用,因为我需要在任何 Fiber 之外返回值。

也许可以包装整个执行(包括使用 API 的代码),但我真的不想要这个。有没有我想要的模块?

【问题讨论】:

  • 您不能使用异步结果作为函数的返回值,而没有繁忙的等待黑客。您的get API 方法必须使用回调参数或返回承诺。
  • 我真的不能这样做,因为我正在实现一个 API。现有代码期望此函数是同步的。你能扩展一下“忙等待黑客”吗?
  • 如果禁止使用异步工作流,为什么还要使用 Node?​​span>

标签: javascript node.js asynchronous


【解决方案1】:

如果我理解这个问题,如果没有承诺,您尝试将异步代码与同步代码混合使用您想要完成的事情是不可能的。一旦将异步代码与同步代码混合在一起,就会使整个代码异步,或者有可能在同步代码的结果返回之前同步代码返回一个值。

您总是可以尝试对保持它返回的函数进行超时,直到给定的时间段到期,它希望异步代码执行并在同步代码返回之前有一个返回值。但是,这是非常低效的,并且不能消除问题,因为您仍然可能在异步部分完成之前返回。

我也同意 robertklep 的评论,即 node.js 确实不适合您的用例,您最好寻找另一个工具来完成这项工作。

【讨论】:

  • 由于我控制了 API 的使用范围,我设法将它包装在一个纤程中,让其在 API 函数中运行和屈服。
猜你喜欢
  • 1970-01-01
  • 2018-05-15
  • 2019-02-07
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 2018-05-10
相关资源
最近更新 更多