Javascript问题 - getJSON里面的getJSON forEach循环 - JSON解析错误

时间:2015-04-13 17:57:27

标签: javascript json node.js

虽然我确实理解这些问题非常相似,但我想看看如何解决我的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
        });
    });
});

0 个答案:

没有答案