所以,我一直在考虑一个脑筋急转弯——如果我有一个大对象我出于某种原因不得不在节点 js 中迭代,并且不想在我这样做的时候阻塞事件循环怎么办?
这是一个令人难以置信的例子,我相信它可以更干净:
var forin = function(obj,callback){
var keys = Object.keys(obj),
index = 0,
interval = setInterval(function(){
if(index < keys.length){
callback(keys[index],obj[keys[index]],obj);
} else {
clearInterval(interval);
}
index ++;
},0);
}
虽然我确信还有其他原因导致它变得混乱,但这将比常规的 for 循环执行得慢,因为 setInterval 0 实际上并不是每 0 毫秒执行一次,但我不确定如何使用 much更快的 process.nextTick。
在我的测试中,我发现这个示例需要 7 毫秒才能运行,而本机 for 循环(使用 hasOwnProperty() 检查,记录相同的信息)需要 4 毫秒。
那么,使用 node.js 编写相同代码的最简洁/最快的方法是什么?