0

Пытаюсь понять разницу между объявлениями переменных внутри цикла с помощью var и let. Подскажите, почему в этом примере в каждой итерации цикла происходит только инициализация колбека, а не инициализация и выполнение сразу? Другими словами, почему колбеки выполняются только уже после всех итераций?

function getUsersAvatars(userNames, cb){
  var url = "/userAvatars/";

  for(var index in userNames){
    _fetchAvatar(url + userNames[index], function(avatarUrl){
      _displayAvatar(userNames[index], avatarUrl);
    });
  }
}
VenZell
  • 19,872
v0lmag
  • 1
  • отличие var и let вы можете заметить попытавшись обратиться к соответствующей переменной после цикла – Grundy Jun 19 '16 at 07:02
  • Отличия я понял. Но не понимаю, почему функции выполняются после последней итерации, а не во время каждой из них. Как мне подсказали на другом ресурсе, это такая особенность работы асинхронных функций. С этой темой я пока не знаком (учу JS на курсах), поэтому меня смутило поведение кода в указанном мной примере. – v0lmag Jun 19 '16 at 08:20
  • функция _fetchAvatar_ выполняется на каждой итерации цикла. – Grundy Jun 19 '16 at 08:31
  • да, но ведь функция-коллбек, которая выступает вторым аргументом _fetchAvatar, работает иначе? – v0lmag Jun 19 '16 at 08:41
  • она выполняется тогда, когда решит _fetchAvatar_ в данном случае после получения ответа от сервера. – Grundy Jun 19 '16 at 08:43
  • спасибо! вот этот момент меня как раз и вводил в заблуждение. буду признателен, если подскажете, где можно почитать о порядке выполнения подробнее – v0lmag Jun 19 '16 at 08:46

0 Answers0