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