流和背压为什么能避免一次性读入大文件?
参考答案
流按块处理数据,让生产与消费逐步进行,减少一次性载入全部数据的需求。背压用于协调上下游速度:当写入方无法继续接收时,上游应暂停或等待,而不是无限堆积缓冲。
Node 可使用 pipeline 组合流并集中处理错误和清理。手写 writable.write 循环时,返回 false 表示需要等待相应的 drain 信号再继续;highWaterMark 是缓冲策略的一部分,不应视为所有内存使用的绝对上限。
流仍需要处理取消、文件句柄释放和部分输出失败。小数据使用流不一定更简单,但下载、上传、日志和压缩等大数据管道往往更适合流式处理。