Twitch api freecodecamp loop проблема
Я пытаюсь завершить api twitch на freecodecamp.
У меня есть массив allTotalUsers с пользователями, с которыми я зацикливаюсь.
Похоже, что мой цикл правильно собирает информацию, необходимую мне для каждого пользователя в моем списке allTotalUsers. Я проверил это, отобразив данные офлайн-пользователей, и они показали (несколько).
Проблема в моем операторе 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();
};
}
1 ответ
Согласно спецификации
Объявленияlet и const определяют переменные, относящиеся к области LexicalEnvironment запущенного контекста выполнения. Переменные создаются, когда создается экземпляр их содержащей Lexical Environment, но к ним нельзя получить доступ, пока не будет оценена переменная LexicalBinding.
Итак, в отличие от var
которая предназначена для VariableEnvironment
(контекста исполнения), let
ограничено LexicalEnvironment
,
замещать
var streamerName = allTotalUsers[i];
с
let streamerName = allTotalUsers[i];