我想从一个大的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)
但它什么都没印。我错过了什么?
'end'
事件似乎不会沿链向下发射。只有'data'
和'pipe'
是。
根据.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);