javascript - 按顺序加载 API 请求 (JavaScript)

标签 javascript getjson

我正在编写的脚本在 for 循环中进行了多次 API 调用。问题在于某些 API 调用比其他 API 调用需要更长的加载时间,因此信息在页面上的加载顺序是乱序的。

例如,我将对对象 1-8 进行 API 调用,但它们将按以下顺序加载:4、3、1、2、7、5、6、8

代码基本如下:

function loadData() {
    for (var i = 0; i < 8; i++) {
        $.getJSON("http://theapi.com/data" + i, function(data) {
            var div = "<div>" + data + "</div>";
            browserElement.innerHTML += div;
        });
    }
}

如何强制 JavaScript 在第一个 API 调用完成之前不加载第二个 API 调用?

编辑:使用“promises”链接 API 调用会导致脚本等待显示数据,直到所有数据都已加载。这不是一个理想的结果,因为如果有足够的数据,用户可能需要等待几秒钟以上才能看到任何东西。

最佳答案

在循环中创建所有 div,然后在数据可用时填充数据

function loadData() {
    for (var i = 0; i < 8; i++) {
        let div = document.createElement("div");
        browserElement.innerHTML += div;

        $.getJSON("http://theapi.com/data" + i, function(data) {
            div.innerHTML = data;
        });
    }
}

关于javascript - 按顺序加载 API 请求 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55079634/

相关文章:

javascript - 一段时间后没有用户响应,如何触发状态更改?

javascript - 使用 Javascript 获取标签中的 Span 标签 ID

javascript - 如何通过 jquery mobile 将单个下拉按钮添加到多个可折叠的 div?

jquery - 停止当前的 getJSON 请求

javascript - 如何使 jQuery JSON 返回的数据全局可用并提供次要字符串解析帮助?

javascript - Jasmine:如何测试 GET 请求中是否调用了正确的 URL

javascript - 为什么在 JavaScript 中将对象插入另一个数组后,我的对象会变成数组?

使用本地文件的 jQuery .getJSON 在 Firefox 3.6.13 上停止工作

javascript - 使用 jQuery getJSON 进行简单的 API 调用

javascript - getJSON 响应出现问题