2010-09-28 13 views
6

Estoy aprendiendo node.js y la mayoría de los ejemplos que puedo encontrar se refieren a ejemplos simples. Estoy más interesado en construir sistemas complicados en el mundo real y en estimar qué tan bien el modelo basado en eventos de node.js puede manejar todos los casos de uso de una aplicación real.¿Hay un mecanismo general para finalizar los eventos en node.js?

Uno de los patrones comunes que deseo aplicar es dejar que la ejecución de bloqueo expire el tiempo de espera si no ocurre dentro de un determinado tiempo de espera. Por ejemplo, si lleva más de 30 segundos ejecutar una consulta de base de datos, puede ser demasiado para cierta aplicación. O si lleva más de 10 segundos leer un archivo.

Para mí, el flujo de programa ideal con tiempos de espera sería similar al flujo de programa con excepciones. Si un evento no ocurre dentro de cierto límite de tiempo de espera predefinido, entonces el detector de eventos se borrará del ciclo de eventos y se generará un evento de tiempo de espera. Este evento de tiempo de espera tendría un oyente alternativo. Si el evento se maneja normalmente, tanto el oyente de tiempo de espera como el oyente de eventos se borran del bucle de evento.

¿Existe un mecanismo general para el manejo del tiempo de espera y la limpieza de los procesos de tiempo de espera agotado? Sé que algunos tipos como el socket tienen un parámetro de tiempo de espera, pero no es un mecanismo general que se aplica a todos los eventos.

Respuesta

1

No hay nada como esto en este momento (que yo sepa, pero no sé todo).

Lo único que se me ocurre es que lo reinicieste de alguna manera. He dado un ejemplo a continuación, pero creo que puede tener algunos problemas de alcance. Debería ser solucionable sin embargo.

var to 
function cb() { 
    clearTimeout(to) 
    // do stuff 
} 
function cbcb() { 
    cb() 
} 
function cancel() { 
    cb = function() {} // notice empty 
} 
fs.doSomethingAsync(file, cbcb) 
to = setTimeout(cancel, 10000) 
Cuestiones relacionadas