Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如果所有数据都放在一个块中,那么使用流有什么好处?_Node.js_Stream - Fatal编程技术网

Node.js 如果所有数据都放在一个块中,那么使用流有什么好处?

Node.js 如果所有数据都放在一个块中,那么使用流有什么好处?,node.js,stream,Node.js,Stream,当我在Node.js中执行fs.createReadStream时,数据似乎是以64KB的块形式出现的(我假设这在不同的计算机中有所不同) 假设我正在通过一系列转换(每个转换操作一个块)将一个读流传输到一个写流,然后将其保存到磁盘 如果我事先知道我正在处理的文件保证每个都小于64KB(即,它们将在单个块中读取),那么使用流与普通的旧异步代码相比有什么好处吗?首先,您可以使用配置块大小:字节模式流的默认值为16k(16个对象用于对象模式流),但默认为64k块(请参阅) 如果您完全确定您的所有数据都

当我在Node.js中执行
fs.createReadStream
时,数据似乎是以64KB的块形式出现的(我假设这在不同的计算机中有所不同)

假设我正在通过一系列转换(每个转换操作一个块)将一个读流传输到一个写流,然后将其保存到磁盘


如果我事先知道我正在处理的文件保证每个都小于64KB(即,它们将在单个块中读取),那么使用流与普通的旧异步代码相比有什么好处吗?

首先,您可以使用配置块大小:字节模式流的默认值为16k(16个对象用于对象模式流),但默认为64k块(请参阅)

如果您完全确定您的所有数据都可以放在一个块中,那么使用流确实不会带来立竿见影的好处

但请记住,流是灵活的;它们是代码的统一抽象:您可以从文件、套接字或随机生成器中读取数据。您可以从流管道中添加或删除双工流,您的代码仍将以相同的方式工作

您还可以通过管道将单个可读流传输到多个可写流中,仅使用异步回调将是一件痛苦的事情


还要注意的是,流不会同步发出数据(即,
可读的
事件在下一个勾号发出),它可以很好地处理同步调用异步回调的常见错误,从而创建一个可能的堆栈溢出错误。

另外一点是,当您的数据块为16k、64k或其他值时,流的接收者可能会更小,而且对他们来说,流式处理还是有益的。