En Nodejs, prácticamente no hay operaciones de E/S de bloqueo. Esto significa que casi todos los códigos IO de nodejs involucran muchas devoluciones de llamada. Esto se aplica a la lectura y la escritura a/desde bases de datos, archivos, procesos, etc. Un ejemplo típico de esto es la siguiente:Gestión de una gran cantidad de recurrencias de devolución de llamada en Nodejs
var useFile = function(filename,callback){
posix.stat(filename).addCallback(function (stats) {
posix.open(filename, process.O_RDONLY, 0666).addCallback(function (fd) {
posix.read(fd, stats.size, 0).addCallback(function(contents){
callback(contents);
});
});
});
};
...
useFile("test.data",function(data){
// use data..
});
Estoy anticipando la escritura de código que hará que muchos operaciones de IO, así que espero para escribir muchos callbacks. Estoy bastante cómodo con el uso de devoluciones de llamada, pero estoy preocupado por la recursividad. ¿Estoy en peligro de tener demasiada recursividad y soplar a través de una pila en alguna parte? Si hago miles de escrituras individuales en mi tienda de valores-clave con miles de devoluciones de llamadas, ¿mi programa finalmente se bloqueará?
¿Estoy malentendiendo o subestimando el impacto? Si no, ¿hay alguna forma de evitar esto mientras se usa el estilo de codificación de devolución de llamada de Nodejs?
El tema es antiguo pero verifique la asincronía: https://github.com/caolan/async – fider