【问题标题】:wait for json to be completed in javascript等待 json 在 javascript 中完成
【发布时间】:2018-02-05 10:33:32
【问题描述】:

我读过very similar subject,但我不使用 JQuery。

这里的问题是:我希望我的 json 在调用我的函数之前完全加载。我知道我必须使用回调,但我不知道为什么我的大脑无法做到。

这里是“json”(因为不是主题而被截断):

{type: "robot", nom: "445250sup01", ville: "RENNES", departement: "35", region: "Ouest", …}
{type: "robot", nom: "445250sup02", ville: "PARIS", departement: "75", region: "Ile-de-France", …}
{type: "robot", nom: "445250sup13", ville: "ORLEANS", departement: "45", region: "Ouest", …}

这是我的函数 xhr 的调用和 json 的读取:

var getDatas = getXHR(), // xhr in another file
    regions = {};
    dateRange = [];

getDatas.open("GET", "./db/datas.json", true);
getDatas.send();

getDatas.onreadystatechange = function() {
    if (getDatas.readyState === 4 && (getDatas.status === 200 || getDatas.status === 0)) {
        var robotsList = JSON.parse(getDatas.responseText);
        getRobotsDatas(robotsList);
    }
};

function getRobotsDatas(robotList) {
    for (var i = 0; i < robotList.length - 1; i++) {...}

问题是最后一个对象永远不会加载... 你能帮我找到正确的方法吗?

提前谢谢你!

【问题讨论】:

    标签: javascript json callback xmlhttprequest


    【解决方案1】:

    假设robotsList 实际上是一个对象数组(从你的“json”sn-p 中并不完全清楚(这根本不是 json))。

    您可能想看看在getRobotsDatas 函数中循环遍历数组的方式。

    你做的一个周期太少了。那就是

    for (var i = 0; i < robotList.length - 1; i++)
    

    应该是

    for (var i = 0; i < robotList.length; i++) // removed the - 1
    

    for (var i = 0; i <= robotList.length - 1; i++) // changed < to <=
    

    在我看来,第一个更清楚。

    【讨论】:

    • 哦,是的!你绝对是对的!!!!!!...我以为我将循环从:“for (var i = Things.length - 1; i >= 0; i--)”更改为“for (var i = 0 ; i >= Things.length ; i++)" !谢谢鹰眼! :D
    • @user2940931 如果这能解决您的问题,如果您能将答案标记为正确,我们将不胜感激:)
    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多