Тема: JavaScript .then()
Показать сообщение отдельно
  #18 (permalink)  
Старый 29.07.2012, 00:33
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Попробую и я обьяснить почему так, т.е. суть асинхронности.
Выполняется код,
выполняется,
выполняется,
выполняется по порядку,
тут раз - и асинхроннный запрос запросил что-то от сервера,
сервер думает, а код выполняется дальше по порядку,
сервер думает, а код выполняется дальше,
сервер думает, а код выполняется дальше,
внезапно сервер законцил думать и вернул результат, в связи с чем была вызвана функция callback прямо во время выполнения какой-то другой части кода.
выпоненен callback(),
код выполняется дальше,
код выполняется дальше...

Или даже так(в вашем случае):
Выполняется код,
выполняется,
выполняется,
выполняется по порядку,
тут раз - и асинхроннный запрос запросил что-то от сервера,
сервер думает, а код выполняется дальше по порядку,
сервер думает, а оставшийся код уже полностью выполнен и ничего не происходиит,
сервер думает, ничего более не происходиит,
внезапно сервер законцил думать и вернул результат, в связи с чем была вызвана функция callback.
выпоненен callback(),
ничего более не происходиит...


Т.о. вы вызываете функцию когда сервер ещё не закончил думать. Естесно переменная ещё undefined.
В яндексе работают умные ребята, там должны быть функции для таких случаев. Накрайняк обращаться к переменной с интервалом до тех пор пока там не появитсчся значение.
__________________
29375, 35

Последний раз редактировалось Aetae, 29.07.2012 в 00:43.
Ответить с цитированием