kakisaebalsujit
@kakisaebalsujit
programist

Почему значения в переменных js отличаются?

Добрый вечер, у меня вопрос по поводу JavaScript.
Есть следующий кусочек кода.
function start() {
        update();
        /*let timerId = setInterval(update, 1000);*/
      }

      function update() {
        let now = new Date();
        document.getElementById("time").innerHTML = "Время: " + now;

        $.ajax(
          'get_users.php', {
            success: function(data1) {
              var users = JSON.parse(data1);
              for (key in users) {
              	$.ajax({
                    url: "https://api.vk.com/method/users.get?user_ids=" + users[key]['vk_id'] + "&fields=photo_50&access_token=token&v=5.124",
                    type: 'GET',
                    dataType: 'jsonp'
                  })
                  .done(function(data2) {
                    console.log("Key:" + key + "\n" + data2.response[0].photo_50);
                  });
                console.log(key);
                console.log(users[key]['vk_id'] + "\n" + users[key]['nickname'] + "\n" + users[key]['balanse']);
                document.getElementById("status" + key).innerHTML = users[key]['nickname'] + " " + users[key]['balanse'];
                document.getElementById("photo" + key).style.display = "block";
              }
            },
            error: function() {
              alert("There was some error performing the AJAX call!");
            }
          }
        );
      }

Но значение key отличаются, когда я делаю запрос с помощью ajax к VK API.
Вот что выводит в консоль.
5f982a153bd3a830847245.png
И при получении фото пользователя key один и тот же, почему?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что асинхронность. К моменту прихода данных в .done цикл уже закончил работу и key равно последнему значению.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽