【发布时间】:2019-03-10 01:41:27
【问题描述】:
我正在编写的脚本在 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 调用会导致脚本等待显示数据,直到所有数据都加载完毕。这不是一个理想的结果,因为如果有足够的数据,用户可能需要等待几秒钟以上才能看到任何内容。
【问题讨论】:
-
查看promises。他们让你链接请求。
-
@Mouser - 这不能解决这个问题 - Rektroth 正在尝试按特定顺序显示它们。
-
您可以使用 es7 的 async..await 功能,也可以使用生成器来实现您想要实现的目标。参考生成器-> developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…* | async..await -> javascript.info/async-await
标签: javascript getjson