·更新于 2026年4月21日· 63 次浏览 Node.jsI/O
Node.js Stream:背压、pipeline 与错误传播
Readable / Writable / Transform 协作;`highWaterMark` 与 `drain` 事件;为何推荐 `stream.pipeline` 替代手动 `pipe` 链。
作者
ZHOU YI
Stream 将数据分块处理,避免大文件一次性读入内存。背压指下游消费慢于上游生产时,应暂停读取直至 drain。
js
const { pipeline } = require('stream/promises')
const fs = require('fs')
await pipeline(
fs.createReadStream('in.bin'),
zlib.createGzip(),
fs.createWriteStream('out.gz')
)要点
pipeline在错误时销毁参与流并 reject,避免资源悬挂- 对象模式与二进制模式不要混用
- Transform 需正确实现
_transform与callback