【问题标题】:Using Writable stream as an event emitter使用可写流作为事件发射器
【发布时间】:2016-05-13 07:05:52
【问题描述】:

我想知道是否可以使用可写流 (require('stream').Writable) 作为事件发射器。

例如,

   var jsonData = [];

   var strm = new stream.Writable({
        write: function(chunk, encoding, next) {

            jsonData.push(chunk.toString());
            next();
        }

    });


    strm.on('foo',function(msg){
        console.log(msg); //doesn't get called
    });

    strm.emit('foo','bar');  //this doesn't seem to do anything

我认为可读/可写流是事件发射器,但我似乎不能真正以这种方式使用它们?还想知道我是否通过写入 Writable 对象/流之外的数组来正确使用 Writable。

【问题讨论】:

    标签: node.js pipe jsonstream


    【解决方案1】:

    Streams 确实是事件发射器,您的代码示例在节点 v4.2.4 上运行良好

    vladmiller:tmp vladmiller$ node test.js
    bar
    

    和节点v0.12.7

    vladmiller:tmp vladmiller$ node test.js
    bar
    

    【讨论】:

    • 是的一件事我想知道如果流关闭/完成/结束事件已被调用等事件是否仍然可以发出。
    • @AlexMills 很可能它总是会发出事件,只是因为流继承了 EventEmitter,但我宁愿做一个实验来确定
    • 是的,它似乎有效,我可以在完成/结束后使用 emit/on
    猜你喜欢
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多