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.