我想从大型csv文件中读取一些行。在SO上快速搜索,向我指出了'懒惰'模块。这是我的尝试:
items = []
stream = fs.createReadStream src
lazy(stream)
.lines
.skip(1)
.take(5)
.forEach((line)->
items.push line.toString())
.on('end', ->
console.log items)
但它没有打印任何东西。我错过了什么?
答案 0 :(得分:0)
'end'
事件似乎没有从链中发出。只有'data'
and 'pipe'
are。
基于the definition of .join()
,'pipe'
似乎是lazy
使用的内容。
# ...
.forEach((line)->
items.push line.toString())
.on('pipe', () ->
console.log items)
您也可以使用.join()
来使用lazy
自己的API:
# ...
.forEach((line)->
items.push line.toString())
.join(() ->
console.log items)
附注:您不一定需要自己收集items
。您也可以使用.map()
:
lazy(stream)
.lines
.skip(1)
.take(5)
.map(item -> item.toString())
.join((items) -> console.log items)
或者可能只是:
# ...
.map(String)
.join(console.log);