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,以便错误是第一个和值是第二个。