Итак, я думал о мозговой дразнилке - что, если бы у меня был большой объект, по какой-то причине мне пришлось перебирать в node 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);
}
Хотя я уверен, что есть другие причины, что это беспорядочно, это будет выполняться медленнее, чем обычный цикл, потому что setInterval 0 фактически не выполняет каждые 0 мс, но я не уверен, как сделать цикл с гораздо более быстрым процессом .nextTick.
В моих тестах я нашел, что этот пример занимает 7 мс для запуска, в отличие от нативного цикла (с проверкой hasOwnProperty(), регистрацией той же информации), которая занимает 4 мс.
Итак, что самый чистый/самый быстрый способ написать этот же код с помощью node.js?