各位, 我有以下函数,并且想知道仅当数据库操作完成所有项目时调用回调()的正确方法是什么:
function mapSomething (callback) {
_.each(someArray, function (item) {
dao.dosomething(item.foo, function (err, account) {
item.email = account.email;
});
});
callback();
},
我需要的是迭代 someArray
并为每个元素进行数据库调用。替换数组中的所有项目后,我只需要调用回调。当然,回调现在位于错误的位置
谢谢!
最佳答案
按照您当前的方式,回调
会在任何(异步)任务完成之前执行。
async
模块有一个 each()
允许最终回调:
var async = require('async');
// ...
function mapSomething (callback) {
async.each(someArray, function(item, cb) {
dao.dosomething(item.foo, function(err, account) {
if (err)
return cb(err);
item.email = account.email;
cb();
});
}, callback);
}
关于node.js - NodeJS 回调序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755072/