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

  • 本文关键字:一个 数据 如果 node.js stream
  • 更新时间 :
  • 英文 :


当我在Node.js中执行fs.createReadStream时,数据似乎是64KB的块(我认为这在不同的计算机之间有所不同)。

假设我通过一系列转换(每个转换对单个块进行操作)将读流管道化,然后最终将其管道化为写流以将其保存到磁盘。。。

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

首先,您可以使用highWaterMark参数来配置块大小:字节模式流默认为16k(对象模式流为16个对象),但fs.ReadStream默认为64k块(请参阅相关源代码)。

如果你绝对确定你的所有数据都适合一个区块,那么使用流确实没有立竿见影的好处。

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

您还可以将一个可读流管道传输到多个可写流中,这将是一种只使用异步回调的痛苦…

还要注意的是,流不会同步发送数据(即readable事件在下一次勾选时发出),这可以很好地处理同步调用异步回调的常见错误,从而产生可能的堆栈溢出错误。

相关内容

  • 没有找到相关文章

最新更新