0

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

get(url)

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

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

4

1 回答 1

0

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

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

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

于 2013-11-11T15:30:48.383 回答