从Javascript 1.7开始,有一个Iterator对象,它允许这样做:
var a={a:1,b:2,c:3};
var it=Iterator(a);
function iterate(){
try {
console.log(it.next());
setTimeout(iterate,1000);
}catch (err if err instanceof StopIteration) {
console.log("End of record.\n");
} catch (err) {
console.log("Unknown error: " + err.description + "\n");
}
}
iterate();
node.js中是否有类似的东西?
现在我正在使用:
function Iterator(o){
/*var k=[];
for(var i in o){
k.push(i);
}*/
var k=Object.keys(o);
return {
next:function(){
return k.shift();
}
};
}
但这通过将所有对象密钥存储在中而产生大量开销k
。
你见过这个吗?ejohn.org/blog/unimpressed-by-nodeiterator
—
jcolebrand 2011年
什么开销?您有多少个键和迭代器?如果他们的产品少于一百万,则忽略这种“低效率”。
—
2011年
@jcolebrandφ:似乎
—
stewe 2011年
createNodeIterator
是用于DOM元素,我什至没有DOM;)@ c69:我将所有数据存储keys
在对象的中,并且value
仅设置为1
(700k键中约20MB),对于现在我只是忽略了这个“开销”,但是我希望有一个更好的解决方案:)
我把它看作是一堂
—
令人费解