在 Highland.js 中打印 reduce 的结果

Print result from reduce in Highland.js

我写了一个简单的脚本来计算行数

var
  H = require('highland'),
  fs = require('fs'),
  split = require('split');

var lineStream = fs.createReadStream('data-samples/sample.log').pipe(split());

H('data', lineStream).reduce(0, function(count) {
  return count + 1;
}).each(console.log);

但由于某些原因,我在控制台中什么也看不到。文档说 lazynesseach 调用应该 "invoke" 流。如何解决这个问题?

注意:这是一个关于highland.js的问题,而不是关于计算行数的方法

'reduce' 流仅发出 final value. you should provide _.nil 作为 Highland Stream 的最终值。像这样:

lineStream.on('end', function() { s.write(H.nil) });

还有 Highland.js natively supports Node streams,因此您不需要创建事件流。使用:

H(lineStream)

改为

H('data', lineStream)