Twitch api freecodecamp loop проблема

1

Я пытаюсь завершить 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();

};
}
  • 1
    Замените var streamerName = allTotalUsers[i]; с let streamerName = allTotalUsers[i];
  • 0
    Это заставило его работать ... около 15 часов, и это то, что потребовалось LOL. Я должен прочитать на let vs var сейчас, у меня не было никакой подсказки.
Теги:
for-loop
xmlhttprequest
twitch

1 ответ

1

Согласно спецификации

let и const объявляют переменные, которые привязаны к текущим контекстам выполнения LexicalEnvironment. Переменные создаются, когда их содержащая Лексическая среда создается, но может быть недоступна каким-либо образом, пока не будут оценены переменные LexicalBinding.

Таким образом, в отличие от var который привязан к VariableEnvironment (контекста выполнения), let LexicalEnvironment.

замещать

var streamerName = allTotalUsers[i]; 

с

let streamerName = allTotalUsers[i];
  • 0
    Спасибо за помощь
  • 0
    @ born2gamble Рад, что это сработало для вас. Пожалуйста, не забудьте поднять голос и принять, если этот ответ помог вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню