【问题标题】:node.js: implementing a stream which ignores 'end'node.js:实现忽略“结束”的流
【发布时间】:2017-08-09 23:16:14
【问题描述】:

我正在实现一些可写流并像这样使用它:

const consumer = new MyStream() // stream which I implementing

// producer1 and producer2 are just instances of any Readable stream
producer1.pipe(consumer, {end: false})
producer2.pipe(consumer, {end: false})

这里重复的部分是{end: false}。有没有办法将可写文件配置为忽略来自生产者的“结束”事件? process.stderr 和 process.stdout 像这样工作

【问题讨论】:

  • 你是在实现 MyStream 还是生产者?如果您正在实施 MyStream,那么您正在实施双工流,而不仅仅是可写流。
  • 在代码中添加了一些 cmets。很快:我正在实现 MyStream() 如何实现双工流解决方案可以解决我的问题?

标签: node.js node.js-stream


【解决方案1】:

由于数据不是按需生成的,所以使用write,但是添加drain事件的监听器。

public writeStream(readableStream, cb) {
    if (!this.write(readableStream.read()) {
        this.once('drain', () => {
           console.log("Wait for drain event");
           cb();
        });
    else {
        process.nextTick(cb);
    }
    return this;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2020-01-23
    • 2016-06-18
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多