2015-05-28 3 views
0

Я написал простой скрипт, который должен сосчитать линиипечати результат от уменьшения в 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); 

Но по некоторым причинам я не вижу ничего в консоли. Документация говорит о lazyness, но each вызов должен «вызывать» поток. Как исправить проблему?

NB: Это вопрос о highland.js, а не о способе подсчета строк

ответ

1

«уменьшить» поток только испускает final value. вы должны предоставить _.nil в качестве окончательного значения для Highland Stream. как это:

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

Highland.js Также natively supports Node streams, так что вам не нужно создавать поток событий. Применение:

H(lineStream) 

вместо

H('data', lineStream) 
Смежные вопросы