我已经尝试了几种方法来解决这个问题。我放弃。我在这做错了什么?如果我正在使用的事件是“结束”事件并且我没有向管道写任何内容,为什么我会收到“写完后”错误?我只是在使用后更换一个对象。或者至少我是这么认为的。
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
我已经读过这个练习测试文件并且没有从中得到任何线索,因为它只是比较对象以查看它们是否正确。
答案 0 :(得分:0)
您的解决方案几乎是正确的。只需删除counter.pipe(duplex);
行即可。您不需要将任何内容传递给您创建的双工流,流冒险将会检查它是否有效:)。