Tengo un async.parallel con 2 funciones, y ahora necesito transformarme en async.auto o async.waterfall porque necesito pasar un valor de la primera función a la segunda.
Ambas funciones devuelven una matriz. En la segunda función, el parámetro timeAdjust tendrá el valor de array1.timeAdjust
¿Alguien puede ayudarme?
El código:
router.get('/:machineID', function(req, res, next) { var machineID = req.params.machineID; async.parallel({ one: function(callback){ auxPrinters.function1(machineID, 'ent', function(array1){ callback(null, array1); }); }, two: function(callback){ auxPrinters.function2(machineID, 'ent', timeAdjust, function(array2){ callback(null, array2); }); }, }, function(err, results){ //results.one=array1 & results.two=array2 if(err) {console.log("****** ERROR:"); console.log(err);} else{ console.dir(results); res.render('jobs', {title: 'Job Info', results}); } }); });aquí está su respuesta, pero antes de eso, es extraño para mí que quiera escribir array1.timeAdjust si array es una matriz, así que creeré que array1 es un objeto
router.get('/:machineID', function(req, res, next) { var machineID = req.params.machineID; async.waterfall([ function(callback){ auxPrinters.function1(machineID, 'ent', function(array1){ callback(null, array1); }); }, function(array1, callback){ var result = {} result.one = array1 timeAdjust = array1.timeAdjust auxPrinters.function2(machineID, 'ent', timeAdjust, function(array2){ result.two = array1 callback(null, result); }); }, ], function(err, results){ //results.one=array1 & results.two=array2 if(err) {console.log("****** ERROR:"); console.log(err);} else{ console.dir(results); res.render('jobs', {title: 'Job Info', results}); } }); });como puede ver, no pasé array.timeAdjust sino el array1 completo ya que desea array1 y array2 en la devolución de llamada final
Solución final:
async.waterfall([ function(callback){ console.log("****** ASYNC JOBS 1"); auxPrinters.function1(machineID, 'ent', function(array1){ callback(null, array1); }); }, function(array1, callback){ console.log("****** ASYNC JOBS 2"); auxPrinters.function2(machineID, 'ent', array1, function(array2){ callback(null, array1, array2); }); }, ], function(err, array1, array2){ if(err) {console.log("****** ERROR ASYNC:"); console.log(err);} else{ res.render('jobs', {title: 'Job Info', array1, array2}); } });