Я пытаюсь завершить twitch api на freecodecamp.
У меня есть массив allTotalUsers с пользователями, которых я перебираю.
Мой цикл, похоже, правильно захватывает информацию, которая мне нужна для каждого пользователя в моем списке allTotalUsers. Я проверил это, показывая данные от автономных пользователей, и он показал (несколько).
Проблема заключается в инструкции if if (streamInfo == null), в streamerName отображаются только дубликаты.
Например, если есть 2 пользователя в автономном режиме, Боб и Джон.
Он покажет Бобу Бобу
function showOfflineUsers() {
var onlinePeople = $('#displayInfo');
onlinePeople.html('');
//allTotalUsers is an array list that is loaded when the page loads and stored globally.
for (var i = 0; i < allTotalUsers.length; i++) {
var streamerName = allTotalUsers[i];
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState === 4 && this.status == 200) {
var json = JSON.parse(this.responseText);
// gets the status of stream(null etc)
var streamInfo = json['stream'];
if (streamInfo == null) {
onlinePeople.append("<li>" + "<a href = 'https://www.twitch.tv/" + streamerName + "'>" + streamerName + "</a>" + "</li>" + "<br>");
}
}
}
xmlhttp.open("GET", "https://api.twitch.tv/kraken/streams/" + streamerName + "?client_id=" + clientId, true);
xmlhttp.send();
};
}
Согласно спецификации
let и const объявляют переменные, которые привязаны к текущим контекстам выполнения LexicalEnvironment. Переменные создаются, когда их содержащая Лексическая среда создается, но может быть недоступна каким-либо образом, пока не будут оценены переменные LexicalBinding.
Таким образом, в отличие от var
который привязан к VariableEnvironment
(контекста выполнения), let
LexicalEnvironment
.
замещать
var streamerName = allTotalUsers[i];
с
let streamerName = allTotalUsers[i];
var streamerName = allTotalUsers[i];
сlet streamerName = allTotalUsers[i];