【问题标题】:Understanding streams in Node.js [closed]理解 Node.js 中的流 [关闭]
【发布时间】:2013-01-11 03:19:00
【问题描述】:

我目前正试图围绕 Node 的流。我想我明白了,但我不确定。让我困惑的是this quote by Dominic Tarr

流是最好的节点,也是最容易被误解的想法,[...]

由于 Dominic 绝对是一个非常聪明的人(而且我想比我聪明),我不确定我是否真的正确理解了流,或者我是否错过了重点 ;-)。因此,我想解释一下我是如何理解流的,并请您批准或拒绝。

我对流的基本理解是,流是将数据从源传输到目标的抽象包装器。有可读可写流和可读写的双工流。这个想法是抽象出实际的源或目标,以便您可以专注于处理流,而无需知道您正在处理的实际资源是什么。您只是在访问一个流以进行读取和/或写入。

我对 Node.js 流的理解正确吗? 基本上,这与 .NET 中的流的想法相同(这是我过去 12 年左右的背景)。 Node.js 流与 .NET 中的流有何不同?

举个例子:我想从文件或网络资源中读取并不重要,我只是使用流将实际源抽象出来,然后从该流中读取。我什至可以更改源代码,但我的流式读取代码仍然可以以完全相同的方式工作。这是正确的吗?

【问题讨论】:

  • 这种问题对于 SO 来说是题外话。 “如果你问这个问题的动机是‘我想参加关于______的讨论’,那么你不应该在这里问。” stackoverflow.com/faq#dontask
  • 我不明白问题出在哪里。常见问题解答明确指出:“如果您的动机是“我希望其他人向我解释______”,那么您可能没问题。” - 这正是我的动机。我希望其他人向我解释我对 Node.js 中的流的想法是对还是错。这是一个有客观答案的问题:是或否。因此,我不理解您的异议。
  • +1,对我来说似乎足够接近主题。 Golo,如果你不介意,我会稍微编辑和改写你的问题,以消除关于它是否是主题的所有问题。一会儿……
  • 我想温和地敦促模组请克制地使用“封闭为非建设性”的权力。一方面,我会发现这个讨论非常有建设性。

标签: node.js stream


【解决方案1】:

我认为你说得对。 Node 中的流就像花园软管一样工作。您可以连接源和目标(作为可读/可写或双工流),还可以将流的输出连接到另一个流的输入,进一步扩展数据的传输方式。

Substack 在去年的 LXJS 大会上就 Node.js 中的 Streams 做了一场精彩的演讲:
LXJS 2012 - James Halliday - Harnessing The Awesome Power Of Streams

它非常压缩(您必须不时暂停视频,因为他的实时编码速度非常快),但对流的工作方式给人留下了很好的印象。

【讨论】:

  • 感谢您提供精彩视频的链接 :-)!
猜你喜欢
  • 2016-11-24
  • 2018-02-06
  • 2015-11-20
  • 2017-04-30
  • 2020-06-28
  • 2013-01-13
  • 1970-01-01
  • 2019-12-18
  • 2014-10-29
相关资源
最近更新 更多