将 async.parallel 转换为 async.auto
Transform async.parallel to async.auto
我有一个带有 2 个函数的 async.parallel,现在我需要转换为 async.auto 或 async.waterfall,因为我需要将一个值从第一个函数传递到第二个函数。
两个函数都return一个数组。在第二个函数中,参数 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});
}
});
});
这是你的答案,但在此之前你想写 array1.timeAdjust if array 是一个数组对我来说很奇怪,所以我只相信 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
最终解决方案:
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});
}
});
我有一个带有 2 个函数的 async.parallel,现在我需要转换为 async.auto 或 async.waterfall,因为我需要将一个值从第一个函数传递到第二个函数。
两个函数都return一个数组。在第二个函数中,参数 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});
}
});
});
这是你的答案,但在此之前你想写 array1.timeAdjust if array 是一个数组对我来说很奇怪,所以我只相信 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
最终解决方案:
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});
}
});