虽然我确实理解这些问题非常相似,但我想看看如何解决我的JSON问题,因为这个问题涉及3个函数,而不是2个。
我被引导到这个问题:JavaScript closure inside loops – simple practical example
然而,他们的情况要简单得多,我试过这两个答案都无济于事。我的解决方案实施可能不正确。
我在这里遇到了一些不好的情况;我正在尝试在forEach循环中的getJSON方法中使用getJSON方法。
我的主要问题是,循环的某些部分执行速度比其他部分快,切换变量,因此弄乱了getJSON的第二部分。最后,它会因API的错误而崩溃,因为某些JSON没有这样的对象,即使我可以检查它并且它会在那里。
我认为这个问题意味着我需要这些方法同步工作。
我正在使用NodeJS,Require和一些各种API。我看到,我的两个getJSON都有正在使用的回调。我认为这只是第一个执行速度比第二个快得多。
我也尝试过使用wait和setTimeout方法无所适从:(
offer.items_to_receive.forEach(function(item){
function wait(callback, delay){
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + delay);
callback();
}
getJSON(firstjsonlink, function(json){
var name = json.result[item.classid].name;
var qualityString = json.result[item.classid].tags[0].internal_name;
var qualityInt = json.result[item.classid].app_data.quality;
var tradableString = "Untradable";
var craftableString = "Craftable";
if(json.result[item.classid].tradable == 1){
tradableString = "Tradable";
}
getJSON(secondjsonlink, function(jsonNew){
var value = jsonNew.response.items[name].prices[qualityInt][tradableString][craftableString][0].value_raw;
}
total += value; // total is in fact defined right before the top of the paste
});
});
});