node js Stream vs Async

时间:2014-05-02 19:53:09

标签: node.js asynchronous

我正在编写一个节点js app来基本上通过几个不同的管道处理数据。示例管道可能是:

  1. 将XML文件解析为每个项目的项目
  2. 查询项目的API
  3. 将API结果转换为标准化模型
  4. 将结果保存在MongoDB中
  5. 我最初使用async库实现了这一点,并且效果非常好。我开始研究使用本机Node Streams的替代实现。这似乎具有使我的代码更加模块化(一切都是可读,转换或可写)的优势,而且我需要使用的库少一个。

    使用Streams有什么缺点?我最好坚持使用异步吗?

1 个答案:

答案 0 :(得分:1)

我已经使用了两者,到目前为止,我发现流接口对于这种处理更加理智。

关于流的好处是输入和输出方法是完全标准化的,因此任何给定的流应该能够适合任何其他流,假设它们处于兼容模式(对象与字符串)。它们还可以轻松检查中间值。 event-stream库使组合流变得非常容易,大多数只需要执行键操作的函数。

而不是异步,你可能想尝试使用像Q这样的库来使用promises,这很像那样,但是你在如何处理错误,创建复杂的事件链方面有更多的功能步骤,并传播回应。

当需要使用异步调用的输出时,以及当这些操作不是顺序或并行地对大量元素进行操作的管道的一部分时,

Promise工作得非常好。

显然,你可以在没有承诺或流的情况下做任何事情,但这些模式允许你以更清洁,更易于管理的方式表达你的逻辑。