Nodeschool的Stream-Adventure#12 Duplexer redux

时间:2015-03-16 20:48:10

标签: javascript node.js stream

我已经尝试了几种方法来解决这个问题。我放弃。我在这做错了什么?如果我正在使用的事件是“结束”事件并且我没有向管道写任何内容,为什么我会收到“写完后”错误?我只是在使用后更换一个对象。或者至少我是这么认为的。

var duplexer2 = require("duplexer2");
var through = require('through2');


module.exports = function (counter) {
    var countries = {};        

    var duplex = duplexer2(through.obj(function (obj, encoding, done) {
        if (obj.country in countries)
            countries[obj.country]++;
        else 
            countries[obj.country] = 1;  
        done();
    }), counter);

    duplex.on("finish", function() {
        counter.setCounts(countries);
    });

    counter.pipe(duplex);

    return duplex;
};

如果我将行counter.setCounts(countries);替换为console.log(countries),我会看到它已正确填充。

问题文字:http://pastebin.com/vAM4vKZg

我已经读过这个练习测试文件并且没有从中得到任何线索,因为它只是比较对象以查看它们是否正确。

1 个答案:

答案 0 :(得分:0)

您的解决方案几乎是正确的。只需删除counter.pipe(duplex);行即可。您不需要将任何内容传递给您创建的双工流,流冒险将会检查它是否有效:)。