0

我想从一个大的 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)

但它不打印任何东西。我错过了什么?

4

1 回答 1

0

'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);
于 2013-08-16T06:10:23.487 回答