了解Node.js中的流

时间:2013-01-27 18:58:38

标签: node.js stream

我目前正试图绕过Node的流。我想我有了主意,但我不确定。令我困惑的是this quote by Dominic Tarr

  

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

因为Dominic肯定是一个非常聪明的人(我想我比我更聪明)我不确定我是否真的理解了溪流,或者我是否错过了这一点;-)。因此,我想解释一下我如何理解流,并要求您批准或拒绝。

我对流的基本理解是流是将数据从源传输到目标的抽象包装器。存在可读和可写的流,以及可读和可写的双工流。我们的想法是抽象出实际的源或目标,这样您就可以专注于处理流而无需知道您正在处理的实际资源。您只是访问流阅读和/或写作。

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

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

1 个答案:

答案 0 :(得分:12)

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

Substack在去年的LXJS会议上对Node.js中的Streams进行了精彩的讨论:
LXJS 2012 - James Halliday - Harnessing The Awesome Power Of Streams

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