Node.js + Lazy:迭代文件行

我试图懒读一个文件,但是我不能使用each() 。 我想读取文件的第一行,然后读取另一个文件的第一行,依此类推。

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

 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); }); 

这是Lazy.js的一部分,我承认并没有做出很好的解释。 让我从这里的getIterator方法的当前文档复制一个片段:

这个方法用于对序列进行asynchronous迭代。 从Sequenceinheritance的任何types都必须实现此方法,否则不能支持asynchronous迭代。

请注意, 此方法并不打算由应用程序代码直接使用 。 相反,它的目的是为实现者提供一种手段来潜在地定义支持同步或asynchronous迭代的自定义序列types。

你遇到的问题是Lazy.readFile返回一个asynchronous序列。 所以getIterator将无法工作,因为Iteratortypes只公开一个同步接口。

我已经更新了Lazy.js,因为你发布了这个问题。 从0.3.2开始,在一个asynchronous序列上调用getIterator 将会抛出一个exception 。