【发布时间】:2017-07-08 01:36:33
【问题描述】:
我正在构建一个管道(使用 nodeJS),我遇到了一个我不知道如何最好地解决的案例:
管道:
collect => clean => merge
collect 将获取许多资源,并在完成后将其传递给clean。问题是collect 的输出是一个列表,而clean 的输入是一个单项。
重点是clean 不需要知道我们处理了一个项目列表,它只需要清理一个项目并将其返回。此外,项目的完整列表会变得非常大,因此在 clean 中迭代它们的简单解决方案甚至不可行。
谁能指出这个案例的设计模式?
【问题讨论】:
-
我认为您可以为此使用 Node.js 流。如果数据是逐部分收集的,这将是一件好事。或者您可以为此使用 RabbitMQ 或其他队列。如果您提供一些代码,将更容易找到合适的解决方案。
-
我也经常回到流媒体,我会进行更多调查。与此同时,我提出了一个“装饰者”的概念:github.com/lipsumar/promise-pipeline/blob/master/index.js
标签: node.js asynchronous pipeline