我写了这段代码:
$(document).ready(function() {
var streamNames = [
"ESL_SC2",
"OgamingSC2",
"nl_kripp",
"nl_kripp",
"freecodecamp",
"storbeck"
];
for (var i = 0; i < streamNames.length; i++) {
$.getJSON(
"https://api.twitch.tv/kraken/streams/" +
streamNames[i] +
"?client_id=.......",
function(data) {
if (data.stream == null) {
$("#status" + [i]).text("Offline");
} else {
$("#status" + [i]).text("Online");
console.log(i)
}
;
这里发生了两个问题。
1.JSON数据是随机出现的,而不是数组的顺序。
2.i在for表达式中始终为6(最后一次计数)。
任何人都可以帮我弄清楚为什么会发生这种情况?
答案 0 :(得分:0)
var
升降机,因此您的代码等同于
var i;
for (i = 0;...
您可以在此处使用let
来解决此问题。 for (let i = 0; ...
永远无法保证JSON以任何顺序返回。这就是事件循环和异步性的本质。但是let
至少i
s对于循环的每个块应该是唯一的。