我花了相当长的时间来解决这个问题,因为我遇到了类似的情况。我尝试过async.series
和async.waterfall
两种方法。
async.series
:
使用一个变量在回调函数之间共享数据。我不确定这是否是最好的方式。我必须感谢Sebastian出色的关于async
的文章。
var async1 = require('async');
exports.asyncSeries1 = function (req, res, callback) {
var sharedData = "Data from : ";
async1.series([
function(callback) {
sharedData = "First Callback";
callback();
},
function(callback){
console.log(sharedData);
sharedData = "Second Callback";
callback();
}
],
function(err) {
console.log(sharedData);
if (err) {
callback();
}
callback();
}
);
};
async.waterfall
: 我尝试使用async.apply
来使用另一个回调函数。这是帮助我解决问题的代码片段。
var async2 = require('async')
exports.asyncWaterfall1 = function (arg1, arg2, cb) {
async2.waterfall([
async2.apply(assignVariables, arg1, arg2),
function(arg1, arg2, callback){
console.log(arg1);
console.log(arg2);
arg1 = 5;
arg2 = 6;
callback(null, arg1, arg2);
},
function(arg1, arg2, callback){
console.log(arg1);
console.log(arg2);
arg1 = 7;
arg2 = 8;
callback(null, arg1, arg2);
}
],
function (err, arg1, arg2) {
console.log(arg1);
console.log(arg2);
});
};
function assignVariables(arg1, arg2, callback) {
console.log(arg1);
console.log(arg2);
arg1 = 3;
arg2 = 4;
callback(null, arg1, arg2);
};
PS:
来源。
async.waterfall
方法,而不是async.series
。 - adeneo