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