我有以下功能并行获取数据。完成提取数据后,结果将通过'结果'回调函数中的变量。我需要参数化而不是硬编码产品','图像'我需要能够传递一个数组。 (即我需要说var fetchInParallel = function (id, res, names)
)names = ['products', 'images']
我该怎么做?我试了using forEach而没有运气。
var fetchInParallel = function (id, res) {
async.parallel(
[
function (callback) {
commonService.findById('products', id, function (result) {
callback(false, result);
})
},
function (callback) {
commonService.findById('images', id, function (result) {
callback(false, result);
})
}
],
function (err, results) {
// handle errors code
var products = results[0];
var volatile = results[1];
var target = stitch(products,images);
res.send(target)
}
);
}
答案 0 :(得分:3)
您正在寻找map
function:
function fetchInParallel(id, names, res) {
async.map(names, function(name, callback) {
commonService.findById(name, id, function (result) {
callback(null, result);
});
}, function (err, results) {
if (err)
… // handle error code
var target = stitch(results); // combine names with results
res.send(target)
});
}
答案 1 :(得分:2)
你可以像这样使用async.map而不是并行;
var fetchInParallel = function (id, res,names) {
async.map(names,
function (name,callback) {
commonService.findById(name, id, function (result) {
callback(null, result);
})
},
function (err, results) {
}
);
}