【问题标题】:Print result from reduce in Highland.jsHighland.js 中 reduce 的打印结果
【发布时间】:2015-05-28 07:34:22
【问题描述】:

我写了一个简单的脚本,应该算行

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);

但由于某些原因,我在控制台中什么也看不到。文档中提到了lazyness,但each 调用应该“调用”流。如何解决这个问题?

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

【问题讨论】:

    标签: node.js stream reactive-programming frp highland.js


    【解决方案1】:

    'reduce' 流只发出final value。您应该提供 _.nil 作为 Highland Stream 的最终值。像这样:

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

    还有 Highland.js natively supports Node streams,所以你不需要创建事件流。使用:

    H(lineStream)
    

    改为

    H('data', lineStream)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      相关资源
      最近更新 更多