尽管我现在可以获得一个变量,外部函数是microsite,或者将第二个函数的回调更改为function(err, result) { cb(cb, result, microsite)},但我想知道一个比上面建议的更好的选项。这是我的代码:
var funcs = [
function(cb){
Microsite.findOne({_id: id1}, cb);
},
function(microsite, cb){
VideoAccount.findOne({_id: id2}, cb);
},
function(videoAccount, cb) {
execute(microsite, videoAccount, cb);
});
async.waterfall(funcs, function(err, result){...});发布于 2016-05-16 19:49:54
您可以使用自动函数:
async.auto({
microSite: function(cb) {
Microsite.findOne({_id: id1}, cb);
},
videoAccount: function(cb) {
VideoAccount.findOne({_id: id2}, cb);
},
thirdFunction: ["microSite", "videoAccount", function(results, cb) {
execute(results.microSite, results.videoAccount, cb);
}]
}, function(error, result) {...});其中,最后的result是表单的一个对象:
result = {
microSite,
videoAccount,
thirdFunction
}注意:第三个函数中的参数取决于您的版本:
1.x是function(cb, results)
2.x是function(results, cb)
就我个人而言,我用自动随时随地代替平行,瀑布,和系列。如果您的代码曾经更改到当前的需求,那么将来重构就更容易了。
https://stackoverflow.com/questions/37260428
复制相似问题