Javascript async.js:forEachOf未调用最后一个回调
我已经检查了关于这个主题的所有帖子,并在迭代器中添加了一个回调。 然而,它似乎不起作用Javascript async.js:forEachOf未调用最后一个回调,javascript,node.js,asynchronous,async.js,Javascript,Node.js,Asynchronous,Async.js,我已经检查了关于这个主题的所有帖子,并在迭代器中添加了一个回调。 然而,它似乎不起作用 async.forEachOf(scoreTree.nodes,函数(节点,键,回调){ if(!node.composition.weights){ mongooseCall.etc.find({} } ,函数(错误,数据){ //一些同步代码 //使用数据更新节点。。。 回调(空); }); } },函数(err){ lastCall(err,scoreTree,函数(){scoreTree.save(
async.forEachOf(scoreTree.nodes,函数(节点,键,回调){
if(!node.composition.weights){
mongooseCall.etc.find({}
}
,函数(错误,数据){
//一些同步代码
//使用数据更新节点。。。
回调(空);
});
}
},函数(err){
lastCall(err,scoreTree,函数(){scoreTree.save();});
});代码>开发者控制台是您的朋友,它会向您显示代码中可能出现的错误-看起来您的{
-就在mongooseCall.etc.find({}
试着这样做:
async.forEachOf(scoreTree.nodes, function (node,key, callback){
if(!node.composition.weights){
mongooseCall.etc.find({}
// } <- This is the one too many
,function (err, data) {
//some synchronous code
//use data to update node...
callback(null);
});
}
},function (err) {
lastCall(err, scoreTree, function () {scoreTree.save();});
});
async.forEachOf(scoreTree.nodes,函数(节点,键,回调){
if(!node.composition.weights){
mongooseCall.etc.find({}
//}实际上,我删除了mongodb调用中的一些代码,我忘记了一个}。
这里的主要问题是没有为所有节点调用“回调”。
添加else可以解决此问题
async.forEachOf(scoreTree.nodes,函数(节点,键,回调){
if(!node.composition.weights){
mongooseCall.etc.find({}
//}请删除这篇文章。这本质上是我答案的副本。我添加了以下内容:否则{//这需要添加回调(null);}这不是以前的内容..没关系-不需要回答您最初的问题。