3

我正在尝试编写一段代码:

  • 通过一些请求访问 2 web 服务
  • 响应将是对象序列,每个对象由 id 标识,响应按 ID 升序排序
  • 响应将很大并且流式传输(或 gzip 分块)
  • 结果将是基于 ID 合并来自两个输入的数据

我试图实现的是,一旦响应的相应部分可用,就应该写出输出。我也不想等待整个响应到位,因为这会耗尽内存。我想尽快开始流式输出,并尽可能少地保留内存。

什么是开始的好方法?

我看过 aleph 和 lamina,还有 async.http.client。这些工具似乎可以帮助我,但我很难弄清楚如何让一段代码对来自两个 Web 服务的相同部分的响应做出反应。

4

1 回答 1

3

你可以做这样的事情(使用 aleph - 在引擎盖下使用层通道抽象)。

现在,订阅回调将在每个 JSON 对象到达任一通道后立即接收它,并且您可以拥有一个本地atom映射,其中键是您想要组合来自 2 个通道和值的结果的值是一个向量,它将存储相同键的值。所以这将是这样的:

  • 在回调中接收项目时,检查本地atom地图是否已经有密钥
  • 如果 key 已经存在,则对 key 的 2 个项目(一个已经在地图中,另一个是您刚刚收到的)存储或进行其他处理,然后从地图中删除该 key。
  • 如果 key 不存在,则创建 key 和 value,[item]即现在正在接收的一项的向量。
于 2012-06-17T06:50:20.207 回答