前端知库

流和背压为什么能避免一次性读入大文件?

参考答案

流按块处理数据,让生产与消费逐步进行,减少一次性载入全部数据的需求。背压用于协调上下游速度:当写入方无法继续接收时,上游应暂停或等待,而不是无限堆积缓冲。

Node 可使用 pipeline 组合流并集中处理错误和清理。手写 writable.write 循环时,返回 false 表示需要等待相应的 drain 信号再继续;highWaterMark 是缓冲策略的一部分,不应视为所有内存使用的绝对上限。

流仍需要处理取消、文件句柄释放和部分输出失败。小数据使用流不一定更简单,但下载、上传、日志和压缩等大数据管道往往更适合流式处理。