·更新于 2026年4月21日· 63 次浏览 Node.jsI/O

Node.js Stream:背压、pipeline 与错误传播

Readable / Writable / Transform 协作;`highWaterMark` 与 `drain` 事件;为何推荐 `stream.pipeline` 替代手动 `pipe` 链。

Node.js Stream:背压、pipeline 与错误传播
ZHOU YI

作者

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 需正确实现 _transformcallback

Guestbook

留言

若这篇文章也曾停在你心上,留一行字吧,我会看的。

先确认一下邮箱

多这一步,是为了少些机器骚扰,也让我能更踏实地读每一条真人写下的字。验证码 10 分钟内有效;同一邮箱 60 秒内只能发一封。

本文留言

0已加载 0

这里还静悄悄的——愿意做第一个留下脚印的人吗?