node await async asynchronous node.js control-flow

asynchronous - async - node js await function



¿Cuál es el mejor módulo de flujo de control para node.js? (3)

... Sin embargo, el seguimiento de errores y la variada forma de pasar datos a través del flujo de control hace que el desarrollo a veces sea muy difícil.

Recientemente, creé una abstracción simple llamada "wait.for" para llamar a las funciones asíncronas en el modo de sincronización (basado en Fibras): https://github.com/luciotato/waitfor

Con wait.for, puede usar ''try / catch'' mientras sigue llamando a las funciones async, y mantiene el alcance de la función (no se necesitan cierres). Ejemplo:

function inAFiber(param){ try{ var data= wait.for(fs.readFile,''someFile''); //async function var result = wait.for(doSomethingElse,data,param); //another async function otherFunction(result); } catch(e) { //here you catch if some of the "waited.for" // async functions returned "err" in callback // or if otherFunction throws };

vea los ejemplos en https://github.com/luciotato/waitfor

He usado el módulo async de caolan, que es muy bueno, sin embargo, los errores de seguimiento y la variada forma de pasar los datos a través del flujo de control hacen que el desarrollo a veces sea muy difícil.

Me gustaría saber si hay mejores opciones o qué se está utilizando actualmente en entornos de producción.

Gracias por leer.


A veces es difícil poner todas las funciones en una matriz. Cuando tienes una matriz de objetos y quieres hacer algo para cada objeto, utilizo algo como el siguiente ejemplo.

lea más en: http://coppieters.blogspot.be/2013/03/iterator-for-async-nodejs-operations.html

var list = [1, 2, 3, 4, 5]; var sum = 0; Application.each(list, function forEachNumber(done) { sum += this; // next statement most often called as callback in an async operation // file, network or database stuff done(); // pass an error if something went wrong and automatically end here }, function whenDone(err) { if (err) console.log("error: " + err); else console.log("sum = " + sum); });

Yo nombro las funciones, porque es más fácil de depurar (y más fácil de leer)


Yo uso asincrónico también. Para ayudar a rastrear errores, se recomienda que nombre sus funciones, en lugar de tener muchas funciones anónimas:

async.series([ function doSomething() {...}, function doSomethingElse() {...}, function finish() {...} ]);

De esta forma obtendrás más información útil en los rastros de pila.