JavaScript for循环不同的顺序

时间:2017-08-15 06:59:01

标签: javascript

有人能告诉我为什么每次代码循环都会得到不同的顺序吗? 我是JavaScript的新手,我知道代码不是很整洁。

<html>
<body>
<div id="status">

<br>
</div>
<script>
LoopThis()

function LoopThis(){


document.getElementById("status").innerHTML = "Status - Name: <br>"
var USERLIST = ["amd","danielfromsl","skyrimfus","tyler1","andymilonakis","OMGchad","Russ_Money","h3h3productions"]
var i, len;

for (i = 0, len = USERLIST.length; i < len; i++){

USERCHECK = USERLIST[i]

  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        JSONDOC = this.responseText;
        last = JSONDOC.split('"mature":')
        last = last[1]
        last = last.split(",")
        isonline = last[0]
        streamtitle = last[1].split('"status":')
        streamtitle = streamtitle[1]
        realuser = last[3].split('"display_name":')
        realuser = realuser[1]
        realuser = realuser.split('"')
        realuser = realuser[1]
        url = last[15].split('"url":')
        url = url[1]
        url = url.split('"')
        url = url[1]
     if (isonline == "true") {
        //alert(realuser+" is streaming! Title:"+streamtitle)
        document.getElementById("status").innerHTML += "<font color='0x00FF00'>Online</font> - "+"<a href='"+url+"'>"+realuser+"</a><br>"
      } else { 
        //alert(realuser+" is offline!")
        document.getElementById("status").innerHTML += "<font color='red'>Offline</font> - "+realuser+"<br>"
     }



    }
  };
  xhttp.open("GET", "https://api.twitch.tv/kraken/channels/"+USERCHECK+"?client_id=Sky", true);
  xhttp.send();

}
}

setInterval(LoopThis,5000);
</script>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

使用for循环以预定义的顺序遍历用户列表。 但是在循环内部,您创建了一个异步XMLHttpRequest,并为它提供了一个函数,该函数将在您收到该请求的响应时运行。附加到xhttp.onreadystatechange事件的函数将在收到响应时运行

每次运行脚本时都可以以不同的顺序接收响应,这就是为什么不同的xhttp.onreadystatechange事件将以不同的顺序触发的原因。