You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js可写流被暂停后如何恢复?为什么emit('drain')后管道终止?

自定义可写流暂停后无法恢复问题排查

实现背景

  • 正在基于Node.js Stream 模块开发自定义可写流
  • 参考官方文档对可写流写入逻辑的说明:需要暂停可写流时,可在自定义的_write方法中返回false;后续要恢复流的写入能力,需要触发drain事件
  • 已校验自身实现逻辑完全对齐上述官方文档的要求

异常现象

实际运行后流并没有按预期恢复,反而在上游输入端仍有新数据待传输的情况下直接关闭了管道,具体表现:

  • 代码路径已确认执行了this.emit('drain');语句
  • 触发该语句后,自定义的_write()方法再也没有被触发,管道直接终止退出
  • 已准备对应可复现的示例代码,运行方式为切换到项目「Shell」标签页执行node index.js,可直接观察到触发drain事件后程序停止运行的异常

内容的提问来源于stack exchange,提问作者Onkeltem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 01:36:07