【发布时间】:2015-07-06 12:45:37
【问题描述】:
我正在制作一个更新列表,其中显示有关某些用户的 twitch 信息。它应该显示他们的徽标 a、名称以及他们是否在线。目前,我正在抓取通道并将它们放入三个数组中。一个包含所有频道信息的 Twitch 频道信息数组。一个包含在线用户的 display_name 的数组。一个包含离线用户的 display_name 的数组。
它目前有效,但只有在您按下开始按钮时才有效。为什么需要按钮?如何在没有按钮的情况下填充列表?
http://codepen.io/crosscris/pen/ZGEOor?editors=101
var app = angular.module('FCCTwitchChecker', []);
app.controller('FCCTwitchController', function() {
var TwitchCheck = this;
var FCCstreamers = ["freecodecamp", "storbeck", "terakilobyte", "habathcx","notmichaelmcdonald","RobotCaleb", "medrybw","comster404","brunofin","thomasballinger","joe_at_underflow","noobs2ninjas","mdwasp","beohoff","xenocomagain"];
TwitchCheck.AllUsersChannelObjects = [];
TwitchCheck.OfflineUsers = [];
TwitchCheck.OnlineUsers = [];
var BeginningURL= "https://api.twitch.tv/kraken/";
FCCstreamers.forEach(function(streamer){
var streamURLstring = BeginningURL + "streams/" + streamer + "?client_id=1234chrisclientid4321&callback=?";
var channelURLstring = BeginningURL +"channels/" + streamer + "?client_id=1234chrisclientid4321&callback=?";
$.ajax({
type: "GET",
dataType: "json",
url: streamURLstring,
success: function(result) {
if(result.stream === null || result.error==="Not Found") {
TwitchCheck.OfflineUsers.push(streamer);
} else {
TwitchCheck.OnlineUsers.push(streamer);
}
},
error: function() {
console.log("It failed");
}
});
$.ajax({
type: "GET",
dataType: "json",
url: channelURLstring,
success: function(result) {
if (result.error !== "Not Found") {
TwitchCheck.AllUsersChannelObjects.push(result);
if (result.logo === null) {
TwitchCheck.AllUsersChannelObjects[TwitchCheck.AllUsersChannelObjects.length - 1].logo === "http://placehold.it/350x150";
}
}
},
error: function() {
console.log("It failed");
}
});
});
TwitchCheck.showArray = function () {
console.log(TwitchCheck.AllUsersChannelObjects);
}
TwitchCheck.OnorOff = function(ChannelName) {
if(TwitchCheck.OnlineUsers.indexOf(ChannelName.name) !== -1) {
return "on";
} else {
return "off";
}
}
});
我得到了一个显示名称列表,其中一些显示名称不是有效的频道。我相信 ajax/angular 一直在尝试查找无效频道的信息,但我不确定。
【问题讨论】:
-
如果这是一个 Angular 应用,你应该使用 Angular
$http方法而不是 jQuery 的$.ajax
标签: javascript angularjs asynchronous timing