问题描述
我的代码:
const PassThrough = require('stream').PassThrough
const strm = new PassThrough()
strm.destroy()
strm.write('abcd') // no-op
最后一个strm.write
不执行任何操作,并在节点14.7(最新)中返回false
,并在节点12.18.3(LTS)中抛出ERR_STREAM_DESTROYED
。
销毁流。 (可选)发出一个
'error'
事件,并发出一个'close'
事件(除非将emitClose
设置为false
)。通话后, 可写流已结束,随后对write()
或end()
的调用 将导致ERR_STREAM_DESTROYED
错误。这是破坏性的 即时销毁流的方法先前对write()
的呼叫可能 尚未耗尽,并可能触发ERR_STREAM_DESTROYED
错误。采用 如果在关闭或等待之前刷新数据,则end()
而不是销毁 销毁流之前先处理'drain'
事件。
因此它明确表示它将抛出ERR_STREAM_DESTROYED
。
但是,在documentation of latest node中,添加了以下句子。
一旦
destroy()
被呼叫,则任何其他呼叫都将成为noop并且没有 除_destroy
以外的其他错误可能会以'error'
的形式发出。
虽然先前关于ERR_STREAM_DESTROYED
的文档没有失效。
销毁的write
流的PassThrough
方法在节点14中抛出ERR_STREAM_DESTROYED
或不进行操作的确切条件是什么?请提供引发ERR_STREAM_DESTROYED
的概念验证代码。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)