嵌套for循环MongoDB中的Javascript异步
Javascript async in nested for loop MongoDB
我在一个for循环中有一个异步函数嵌套在另一个for环路中。
// recipesArray is an array of arrays of objects
// recipeObject is an array of objects
// currentRecipe is an object
connectToDb(function(){
// LOOP 1
for (var i=0, l=recipesArray.length; i < l; i++) {
// recipeObject is an
var recipeObject = recipesArray[i];
// LOOP 2
for (var x=0, y=recipeObject.length; x < y; x++) {
var currentRecipe = recipeObject[x];
// this is an asynchronous function
checkRecipe(currentRecipe, function (theRecipe) {
if (theRecipe === undefined) {
console.log('RECIPE NOT FOUND');
} else {
console.log('RECIPE FOUND', theRecipe);
}
});
}
}
});
我需要根据checkRecipe函数的结果将数据添加到recipesArray中。
我一直在尝试不同的东西。。。-我是不是试着追踪我和x。。。-我是否尝试多次回调。。。-我甚至需要做所有这些吗,或者有其他方法吗。。。。
我还尝试过使用node的异步库(这实际上对其他情况很有帮助),但forEach不接受对象(只有一个数组)。
卡住了。
如有任何建议,我们将不胜感激。
假设checkRecipe()
可以无限制并行运行,下面是如何使用async.each()
:
connectToDb(function() {
async.each(recipesArray, function(subArray, callback) {
async.each(subArray, function(currentRecipe, callback2) {
checkRecipe(currentRecipe, function(theRecipe) {
if (theRecipe === undefined)
return callback2(new Error('Recipe not found'));
callback2();
});
}, callback);
}, function(err) {
if (err)
return console.error('Error: ' + err);
// success, all recipes found
});
});
相关文章:
- esri javascript异步打印
- JavaScript异步问题
- Javascript异步成功函数-互斥
- 如何使用javascript异步更新我的内容
- 任何控制Javascript异步加载顺序的方法
- 循环内部的Javascript异步调用
- JavaScript:异步函数
- Javascript异步AJAX和递归排序
- 了解Javascript异步调用
- Javascript异步/等待ajax调用
- javascript异步和twitter的问题
- Javascript 异步用于复杂计算,但不是 ajax 调用
- JavaScript 异步编程:承诺与生成器
- JavaScript 异步循环不返回结果
- Javascript异步函数组合
- Javascript 异步返回
- 添加此 JavaScript 异步调整
- for 循环中的 JavaScript 异步调用
- 这种不规则行为是由Javascript异步运行引起的吗?
- Javascript - 异步函数完成后下一行如何等待执行