我正在尝试懒惰读取文件,但我无法使用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);
});
答案 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
。