我正在学习Node.js并编写API。我的一个API调用需要一个名为Tags的参数,该参数将包含逗号分隔的标签,我想将每个标签保存到磁盘中(我使用MongoDB + Mongoose)。通常,在我的API中保存到数据库时,我会传递回调函数并在其中继续保存操作,但是在这里,我有多个对象需要保存到磁盘,并且我不知道最干净的方法是将所有这些标签保存到磁盘上,然后再保存引用它们的对象。有没有人能建议一个干净的异步模式来使用?谢谢!
我正在学习Node.js并编写API。我的一个API调用需要一个名为Tags的参数,该参数将包含逗号分隔的标签,我想将每个标签保存到磁盘中(我使用MongoDB + Mongoose)。通常,在我的API中保存到数据库时,我会传递回调函数并在其中继续保存操作,但是在这里,我有多个对象需要保存到磁盘,并且我不知道最干净的方法是将所有这些标签保存到磁盘上,然后再保存引用它们的对象。有没有人能建议一个干净的异步模式来使用?谢谢!
async.parallel([
function(){ ... },
function(){ ... }
], callback);
async.series([
function(){ ... },
function(){ ... }
]);
当我不想要额外的依赖项时,我经常使用这种常见的代码模式:
var tags = ['tag1', 'tag2', 'tag3'];
var wait = tags.length;
tags.forEach(function (tag) {
doAsyncJob(tag, done);
});
function done() {
if (--wait === 0) allDone();
}
这段代码将为数组中的每个项目并行运行 doAsyncJob(tag, callback),并在每个作业完成时调用 allDone。如果您需要连续处理数据(一个接一个地),则有另一种模式:
(function oneIteration() {
var item = tags.shift();
if (item) {
doAsyncJob(item, oneIteration);
} else {
allDone();
}
})();