我有一个带有2个函数的async.parallel,现在我需要转换为async.auto或async.waterfall,因为我需要将值从第一个函数传递给第二个函数。
两个函数都返回一个数组。在第二个函数中,参数timeAdjust将具有array1.timeAdjust
中的值任何人都可以帮助我吗?
代码:
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});
}
});
});
答案 0 :(得分:0)
这是你的答案,但在此之前,如果数组是一个数组,你想编写array1.timeAdjust对我来说很奇怪,所以我只相信array1是一个对象
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});
}
});
});
你可以看到我没有通过array.timeAdjust但是完整的array1,因为你想在最后的回调中使用array1和array2
答案 1 :(得分:0)
最终解决方案:
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});
}
});