https://gist.github.com/IllusionElements/ae5427f9675c276f2195 / http://codepen.io/illusionelements/pen/mebZVR代码
目前正在尝试构建一个twitch api站点,它显示用户及其流。目前我似乎无法弄清楚为什么在线/离线部分没有显示/被添加,并且在这部分代码上,似乎所有内容都返回为null,但是当我在console.log时不是所有东西都会返回null。这是代码:
for (i; i < user.length; i++) {
str += "<a href='" + url + "'>"
str += "<div class='row border new'>";
str += "<img class='col-md-2' id='profile' src='" + logo + "'>"
str += "<p class='col-md-5'>";
str += user[i];
str += "</p>";
if (streamsObj !== null) { //if this doesn't evalute as null run it, strangely enough it's running as if its all null
stat.push(streamsObj.channel.status);
str += "<span class='col-md-5 circle' id='online'>"
str += "</span>"
str += "<p class='col-md-12' id='status'>"
str += stat[i];
str += "</p>"
} else if (streamsObj === null) { //Not being run at all here. It's being skipped//
str += "<span class='col-md-5 circle' id='offline'>"
str += "</span>"
str += "<p class='col-md-12' id='status'>"
str += "Ooops" + " " + user[i] + " " + "is Offline, maybe later?"
str += "</p>"
答案 0 :(得分:0)
你有一个非常复杂的逻辑,但这是因为$.ajax
函数运行异步http://api.jquery.com/jquery.ajax/。因此,当您开始为streamsObj
分配一个值,然后在调用结果时进行$.ajax
来电,streamsObj
中的值会发生变化
如果你想保留当前的逻辑,可以使用streamsObj
作为对象,并使用“关联数组”,其中键将是用户的用户名。
所以而不是:
var streamsObj = twitch.stream;
你可以拥有类似的东西:
var streamsObj = {} //a global var outside the function
streamsObj['the-username'] = twitch.stream;
另一方面,逻辑现在非常复杂,每当用户想要在所有,在线,离线上进行过滤时,您都会创建api调用。最好只让用户使用一次并使用https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter进行过滤。例如http://codepen.io/biancamihai/pen/XbXqdM