我正在学习节点并编写 API。我的一个 API 调用采用一个名为 Tags 的参数,该参数将包含逗号分隔的标签,我希望将每个标签保存到磁盘(我使用的是 MongoDB + Mongoose)。通常,当我在我的 API 中保存到数据库时,我会传递一个回调并在该回调内部保存后继续,但是在这里我有可变数量的对象要保存到磁盘,而且我不知道保存所有对象的最干净方法将这些标签复制到磁盘,然后保存引用它们的对象。任何人都可以建议使用干净的异步模式吗?谢谢!
问问题
1006 次
2 回答
8
async对于这些任务来说是一个很好的节点库..
并行或串行运行多个异步调用,然后触发一个回调:
async.parallel([
function(){ ... },
function(){ ... }
], callback);
async.series([
function(){ ... },
function(){ ... }
]);
于 2012-10-29T21:32:41.763 回答
3
当我不想要额外的依赖项时,这是我经常使用的常见代码模式:
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();
}
})();
于 2012-10-29T21:39:41.680 回答