【发布时间】:2011-11-18 09:26:53
【问题描述】:
从 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 中会产生大量开销。
【问题讨论】:
-
什么开销?你有多少键和迭代器?如果他们的产品少于 100 万,请忽略这种“低效率”。
-
@jcolebrand φ:似乎
createNodeIterator是用于 DOM 元素的,我什至没有 DOM ;) @c69:我将所有数据存储在对象的keys和 @ 987654328@ 刚刚设置为1(700k 密钥中大约 20MB),事实上,现在我只是忽略了这个“开销”,但我更喜欢更好的解决方案:) -
我把它看成是一个可以搞乱的类;-)
标签: javascript node.js iterator