我需要从 8 个不同的 URL 获取 8 个 JSON。我将必须更改的查询字符串存储在数组中,然后使用 for 循环遍历它。这是我的代码:
var index = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var request = new XMLHttpRequest();
for (var i = 0; i < index.length; i++) {
var url = "https://wind-bow.glitch.me/twitch-api/channels/" + index[i];
request.open("GET", url);
request.onload = function() {
var data = JSON.parse(request.responseText);
console.log(data);
}
request.send();
}
到目前为止,我只想在控制台上显示每个 JSON。我没有收到任何错误,但我只能显示带有最后一个索引项 (noobs2ninjas) 的最后一个 JSON。
谁能解释我为什么?我如何获得我需要的所有 JSON?
谢谢
原文由 Dema 发布,翻译遵循 CC BY-SA 4.0 许可协议
为了发送第二个请求,您需要等待第一个请求完成。因此,如果您有兴趣以数组顺序获得响应,您可以在每个数组元素上循环,并且只有当您获得响应时,您才能在其余元素上循环:
相反,如果您想完全异步执行所有请求(以并发方式),则必须在循环内声明 请求 变量并确定其作用域。每个数组元素一个 请求。您有一些可能性,例如:
根据@Wavesailor 的评论,为了在通话结束时进行数学计算: