-1
完成我非常新的Node.js,这里是我的问题等待嵌套循环中的NodeJS
我有一个嵌套组映射在这里(我一直在使用的for-each也试过)。 嵌套的所有“get ...”方法都返回由我定义的承诺。我必须不断循环方法返回的数据,并使用它来调用下一个“get ..”方法(存在依赖关系)。完成整个嵌套循环后,“allobj”数组应该有我的最终结果,并且我试图在完成所有循环后返回它。到目前为止,我还没有运气,因为空数组被返回。
var allobj = new Array();
var catcount = 0;
//categories.forEach(function(category){
var p = categories.map(function(category,index,array){
catcount++;
return gettests(runid,category).then(function(tests){
//console.log(tests.sort().reverse()); //this is sync
//tests.forEach(function(test){
var t = tests.map(function(test,index,array){
return getmetriccategories(runid,category,test).then(function(data){
//console.log(data);
//data.forEach(function(mc){
var d = data.map(function(mc,index,array){
return getmetrics(runid,category,test,mc).then(function(data1){
var x = data1.map(function(metric,index,array){
allobj.push(metric);
return metric;
});
});
});
})
})
})
})
//return when all nested loops are done
res.send(allobj);
这里有数百个这类问题已经在堆栈溢出的地方回答了。在堆栈溢出中搜索“promise loop”,你会发现很多相关的答案。既然你已经在使用promise,你需要收集你在循环中创建的所有promise,并返回Promise.all(allYourPromises)'。这就是你如何得到父母的承诺,直到所有的孩子的承诺完成才能解决。 – jfriend00
下面是一个示例:[等待For循环中的承诺](https://stackoverflow.com/questions/32081677/wait-for-promises-from-a-for-loop/32085526#32085526)。 – jfriend00