Substituting $.when.apply()
, $.map()
for for
loops. Note, no .error
property is set at any of the returned objects. Set contentType
to "json"
at $.ajaxSetup()
, set dataType
to "json"
at $.ajax()
requests.
$(document).ready(function() {
var following = [];
var logo;
var status;
var name;
function follower(logo, name, status) {
$("#followerInfo").prepend("<div class = 'row'>" + "<div class='col-md-4>" + "<img src='" + logo + "'>" + "</div>" + "<div class='col-md-4>" + name + "</div>" + "<div class='col-md-4>" + status + "</div></div>");
}
$.ajaxSetup({
contentType: "json"
})
$.ajax({
type: "GET",
dataType:"json",
url: "https://api.twitch.tv/kraken/streams/freecodecamp",
headers: {
'Client-ID': 'rp0e2c4y3nqc392dgwehvbhg0cs5r8c'
},
success: function(data1) {
console.log(data1);
if (data1.stream === null) {
$("#fccStatus").html("Free Code Camp is Currently OFFLINE");
} else {
$("#fccStatus").html("Free Code Camp is Currently ONLINE");
}
}
});
$.ajax({
type: "GET",
dataType:"json",
url: "https://api.twitch.tv/kraken/users/freecodecamp/follows/channels/",
headers: {
'Client-ID': 'rp0e2c4y3nqc392dgwehvbhg0cs5r8c'
},
success: function(data2) {
console.log(data2);
for (var i = 0; i < data2.follows.length; i++) {
var displayName = data2.follows[i].channel.display_name;
following.push(displayName);
}
$.when.apply($, $.map(following, function(_following) {
return $.ajax({
type: "GET",
url: "https://api.twitch.tv/kraken/streams/" + _following /* + "?callback=?" */,
headers: {
'Client-ID': 'rp0e2c4y3nqc392dgwehvbhg0cs5r8c'
},
success: function(data3) {
if (data3.error) {
logo = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Thomas_Organ_Crybaby.jpg/180px-Thomas_Organ_Crybaby.jpg";
name = data3.message;
status = data3.error;
follower(log, name, status);
}
if (data3.stream === null) {
$.ajax({
type: "GET",
dataType:"json",
url: data3._links.channel,
headers: {
'Client-ID': 'rp0e2c4y3nqc392dgwehvbhg0cs5r8c'
},
success: function(data4) {
if (data4.error) {
status = "OFFLINE";
logo = data4.logo;
name = data4.display_name;
if (logo === null) {
logo = "http://images.allposters.com/images/ATA/24802BP.jpg";
}
follower(logo, name, status);
}
}
});
}
}
});
}));
$.when.apply($, $.map(following, function(_following) {
return $.ajax({
type: "GET",
dataType:"json",
url: "https://api.twitch.tv/kraken/streams/" + _following,
headers: {
'Client-ID': 'rp0e2c4y3nqc392dgwehvbhg0cs5r8c'
},
success: function(data5) {
console.log(data5);
if (data5.error) {
logo = data4.stream.channel.logo;
status = data4.stream.channel.status;
name = data4.stream.channel.display_name;
follower(logo, name, status);
}
}
});
}));
}
});
});
plnkr http://plnkr.co/edit/NXYRweuIdv6sQrUnqkWX?p=preview