Entonces, he estado pensando en un juego de ingenio: ¿qué pasaría si tuviera un objeto grande que por alguna razón tuviera que repetir en el nodo js y no quisiera bloquear el ciclo de eventos mientras lo hacía?¿Cuál es la forma más limpia de escribir un ciclo sin bloqueo en javascript?
He aquí un ejemplo fuera de la parte superior-de-mi-cabeza, estoy seguro de que puede ser mucho más limpio:
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);
}
Aunque estoy seguro de que hay otras razones para que sea desordenado, esto se ejecutará más lento que un bucle for normal, porque setInterval 0 en realidad no se ejecuta cada 0 ms, pero no estoy seguro de cómo hacer un bucle con el proceso mucho más rápido.nextTick.
En mis pruebas, encontré que este ejemplo demora 7 ms en ejecutarse, a diferencia de un bucle for nativo (con checks de hasOwnProperty(), que registran la misma información), que demora 4 ms.
Entonces, ¿cuál es la forma más limpia y rápida de escribir este mismo código usando node.js?
Lo siento- leyó mal la pregunta – kennebec
¿Por qué? Esto es abuso. No hagas esto – Raynos
@Raynos - ¿Por qué es este abuso? Si realizo una iteración a través de un objeto gigante con un bucle for nativo, bloqueo el hilo todo el tiempo que el bucle tarde en ejecutarse. Eso suena como abuso para mí, si tomo 25 ms para servir a cada usuario, eso se puede traducir en un gran problema de escalado. – Jesse