を完了するために、私はNode.jsのに非常に新しいです待って、ここに私の問題は私は(私ものために、それぞれ使用して試してみました)ここでマップのネストされたセットを持っているネストされたループがnodejsで
です。 ネストされたすべての "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.all(allYourPromises)を返す '必要があります。それはあなたが子供の約束がすべて終わるまで解決しないという親の約束を得る方法です。 – jfriend00
ここでは、[For Loopsからの約束待ち](https://stackoverflow.com/questions/32081677/wait-for-promises-from-a-for-loop/32085526#32085526)の例を示します。 – jfriend00