複数のAPI呼び出しを行い、正しい場所で返された結果を取得するのに問題があります。これは私が達成しようとしていることです:ネストされた2つのループ。外側のループは複雑なjsonオブジェクトをループし、いくつかのオブジェクトの値を配列呼び出しボックスに配置します。内側のループはAPIを呼び出し、返された結果をbagという名前の配列に配置します。だから私はデータでいっぱいの箱とバッグを持っています。ループとAPI呼び出しの両方が終了したら、boxとbagの両方のデータにアクセスして、それを使って何かをしたいと思います。実行の同じ時点で両方のアレイにアクセスするための最善の方法がわかりません。これは私がこれまでに持っているものですが、もちろん、すべてのループとAPI呼び出しが終了する前に呼び出されるため、バッグとボックスは空です。
var data = {}//a json object with data;
var bag = [];
var box = [];
async.forEach(data.item, function(item, callback){
async.forEach(item.name, function(name, callback){
callApi(item.name, function(obj){
bag.push(obj);
});
callback();
}
box.push(item);
callback();
});
function callApi(name, callback){
asyncApiCall(url+name, function(err, result){
callback(result);
});
}
//when all loops and api requests are done
//do stuff with contents of box and bag here;
console.log(bag, box);