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
将无法工作,因为Iterator
types只公开一个同步接口。
我已经更新了Lazy.js,因为你发布了这个问题。 从0.3.2开始,在一个asynchronous序列上调用getIterator
将会抛出一个exception 。