Node.js + Lazy:迭代文件行

时间:2014-01-04 23:03:10

标签: node.js

我正在尝试懒惰读取文件,但我无法使用each()。 我想读取文件的第一行,然后读取另一个文件的第一行,依此类推。

我正在尝试使用Iterator,但没有成功。 这是我的代码:

var Lazy = require('lazy.js');

var it = Lazy.readFile("log.txt")
        .lines()
        .getIterator();

while(it.moveNext()){
    console.log(it.current());
}

Lazy.readFile("log.txt").lines().size()返回0.

然而,这很好用:

Lazy.readFile("log.txt")
        .lines()
        .each(function(line){
            console.log(line);
        });

1 个答案:

答案 0 :(得分:2)

这是Lazy.js的一部分,我承认自己没有做出很好的解释。让我从the current documentation for the getIterator method复制一个片段:

  

在异步迭代序列时使用此方法。任何   继承自Sequence的类型必须实现此方法,否则不能   支持异步迭代。

     

请注意,此方法无意直接使用   应用程序代码。相反,它旨在作为实现者的手段   可能定义支持的自定义序列类型   同步或异步迭代。

您遇到的问题是Lazy.readFile会返回异步序列。因此getIterator不起作用,因为Iterator类型只公开同步接口。

自从您发布此问题后,我实际上已经更新了Lazy.js;从0.3.2开始,在异步序列will throw an exception上调用getIterator

相关问题