【发布时间】:2016-02-18 04:25:54
【问题描述】:
我试图与回调地狱作斗争,但我的代码有问题。
有人知道如何将 async.js 实现为这样的结构:
for(var i=0;i<array1.length;i++){
//do something
for(var j=0;j<array2.length;j++){
//do something
for(var k=0;k<array3.length;k++){
//do something
bd.findSomethig(array3[k].id, function(err, result){
});
bd.findSomethig(array3[k].ref, function(err, result){
});
}
}
}
更新:
我将把我需要实现的真实结构放在这里
var array1 = array;
var rsp=[];
for(var i=0;i<array1.length;i++){
var object1 = new Object();
object1.a="xx";
object1.b="xx";
object1.c="xx";
object1.d="xx";
var array2=array1[i].array2;
var array2Result=[];
for(var j=0;j<array2.length;j++){
var object2 = new Object();
object2.a="xx";
object2.b="xx";
object2.c="xx";
object2.d="xx";
var array3=array1[i].array2[j].array3;
var array3Result=[];
for(var k=0;k<array3.length;k++){
var object3 = new Object();
var array4=array1[i].array2[j].array3[l].array4;
var array3Result4=[];
for(var l=0;l<array4.length;l++){
var object4 = new Object();
var array5=array1[i].array2[j].array3[k].array4[l].array5;
for (var m=0;m<array5.length;m++){
if(someConditional){
object4.a="xx";
object4.b="xx";
object4.c="xx";
object4.d="xx";
//Here i need to call a BD function to find some rows i need to build the JSON response
bd.findSomethig(array5[m].id, function(err, result){
object4.e=result;
});
bd.findSomethig(array5[m].ref, function(err, result){
object4.f=result;
});
array3Result4.push(object4);
}
}
object3.a=segments;
array3Result.push(object3);
}
object2.e=array3Result;
array2Result.push(object2)
}
object1.e=array2Result;
rsp.push(object1);
}
【问题讨论】:
-
只删除两个外循环。
-
所有循环都很重要。因为我每次都需要迭代
-
它们是三个不同的数组 :( 需要更改答案...
-
是的,我更新了要求以更清晰。因为在原始帖子中,您可能认为是不同的数组
-
就像嵌套循环一样嵌套
async.each/async.map(或…series,或任何你需要的)。有什么问题?
标签: javascript node.js callback async.js