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];
Другие вопросы по тегам