【问题标题】:How do I prevent end messages from closing Nodejs streams?如何防止结束消息关闭 Nodejs 流?
【发布时间】:2018-06-14 14:08:47
【问题描述】:

在节点服务器中,我将一系列流连接在一起。比如说:

streamA.pipe(streamB).pipe(streamC)

最终 streamA 完成,此时我想将下游切换到另一个源:

streamD.pipe(streamB).pipe(streamC)

但是当我尝试这样做时,我收到以下错误:

Error: write after end

如何防止 streamA 关闭我的下游?或者我怎样才能打开我的下游备份以将它们切换到 streamD?

另外,我的用例要求我等到 streamA 结束。我不能过早地切换流。

【问题讨论】:

    标签: node.js node-streams


    【解决方案1】:

    就我而言,我发现如果我在收到“结束”事件时unpipe()我的下游,那么上游将没有机会关闭我的下游并且一切正常。

    streamA.on('end', function() {
        downstreams.forEach(downstream => {
            streamA.unpipe(downstream);
        });
    }
    

    如果有更规范的解决方案,请随时发布。

    【讨论】:

      【解决方案2】:

      一直在谷歌上搜索同样的东西,你可以添加

      streamA.pipe(streamB, {end: false}).pipe(streamC, {end: false})

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 2016-01-29
        • 1970-01-01
        • 2013-10-17
        • 2019-01-09
        • 1970-01-01
        相关资源
        最近更新 更多