-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