Я просматриваю форумы весь день, но не пойму.
Я вызываю Justin.TV-API, чтобы отобразить список моих «отслеживаемых» потоков, а затем выполняю вложенный вызов, чтобы проверить, какой из них подключен к сети.
Вот код, который я хочу использовать:
//Get Favorites as Object "favs"
var viewers;
$.getJSON('http://api.justin.tv/api/user/favorites/hubschrauber.json?jsonp=?', function(favs) {
$.each(favs, function(key, value) {
//For every Object, check if user is referenced in stream and therefore online
$.getJSON('http://api.justin.tv/api/stream/list.json?channel=' + favs[key].login + '&jsonp=?', function(streams) {
viewers = streams[0].channel_count;
});
$('#result').append(favs[key].title + ' ' + key + ': ' + favs[key].login + ' (' + viewers + ') Viewers<br />');
});
});
Затем я столкнулся с проблемами с getJSON и асинхронизацией и пару раз переписал свой скрипт:
сначала вот так (заменив $ .each):
//Get Favorites as Object "favs"
var viewers;
$.getJSON('http://api.justin.tv/api/user/favorites/hubschrauber.json?jsonp=?', function(favs) {
for (var key in favs) {
//For every Object, check if user is referenced in stream and therefore online
$.getJSON('http://api.justin.tv/api/stream/list.json?channel=' + favs[key].login + '&jsonp=?', function(streams) {
viewers = streams[0].channel_count;
});
$('#result').append(favs[key].title + ' ' + key + ': ' + favs[key].login + ' (' + viewers + ') Viewers<br />');
}
});
затем вот так (замена getJSON не-асинхронным ajax):
var favs;
var streams;
var viewers;
$.ajax({
url: 'http://api.justin.tv/api/user/favorites/hubschrauber.json?jsonp=?',
async: false,
dataType: 'json',
success: function(favs) {
for (var key in favs) {
$.ajax({
url: 'http://api.justin.tv/api/stream/list.json?channel=' + favs[key].login + '&jsonp=?',
async: false,
dataType: 'json',
success: function(streams) {
viewers = streams[0].channel_count;
}
});
$('#result').append(favs[key].title + ': ' + favs[key].login + ' (' + viewers + ') Viewers<br />');
}
}
});
Ни в коем случае я не могу передать переменную зрителей (которая записана во вложенном api-вызове, чтобы определить, подключен ли поток и сколько у него зрителей) в
$('#result').append(favs[key].title + ': ' + favs[key].login + ' (' + viewers + ') Viewers<br />');
Мой вывод всегда неопределен:
Day[9]: day9tv (undefined) Viewers
FollowGrubby: followgrubby (undefined) Viewers
OneMoreGame.TV: onemoregametv (undefined) Viewers
Я сделал несколько проверок с добавлениями и оповещениями - JSON-ответы действительны.
Кто может мне помочь?
Большое спасибо за потраченное время.