async.series:可变数量的callback
我正在使用Node.js(Express)和MongoDB(mongooseJS)。 我想要创buildasynchronous函数(一个接一个地,以正确的顺序查询数据库);
问题是:如何创build可变数量的async.series函数,如下所示:
var supply = [0]; async.series([ function(callback) { Model.find({ color: user.color[supply] }).exec(callback); }, ],function(err, results){ res.send('Chosen colors: ' + results); });
如果 – 可以说 – 可变电源= [0,1,2],
那么callback函数将被放置三倍,0,1和2放置在那里:
var supply = [0, 1, 2]; async.series([ function(callback) { Model.find({ color: user.color[supply] }).exec(callback); // supply = 0 }, function(callback) { Model.find({ color: user.color[supply] }).exec(callback); // supply = 1 }, function(callback) { Model.find({ color: user.color[supply] }).exec(callback); // supply = 2 }, ],function(err, results){ res.send('Chosen colors: ' + results); });
换句话说,我如何循环这个片段
function(callback) { Model.find({ color: user.color[supply] }).exec(callback); },
所以这里的function数量将取决于一些variables?
干杯!
麦克风
你可以使用async.mapSeries()
因为它被devise为迭代一个数组。 例:
var supply = [0]; async.mapSeries(supply, function(val, callback) { Model.find({ color: user.color[val] }).exec(callback); }, function(err, results) { if (err) throw err; // all done! console.dir(results); });
这假定.exec()
调用callback,以便错误是第一个和值是第二个。