在响应处理程序中使用多个AJAX请求的索引

时间:2017-10-18 22:14:50

标签: javascript json

我写了这段代码:

$(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(最后一次计数)。

任何人都可以帮我弄清楚为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

var升降机,因此您的代码等同于

var i;
for (i = 0;...

您可以在此处使用let来解决此问题。 for (let i = 0; ...

永远无法保证JSON以任何顺序返回。这就是事件循环和异步性的本质。但是let至少i s对于循环的每个块应该是唯一的。