节点 js 包装异步函数



我正在实现一个具有以下功能的API:

get(url)

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

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

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

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

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

最新更新