Попробую и я обьяснить почему так, т.е. суть асинхронности.
Выполняется код,
выполняется,
выполняется,
выполняется по порядку,
тут раз - и асинхроннный запрос запросил что-то от сервера,
сервер думает, а код выполняется дальше по порядку,
сервер думает, а код выполняется дальше,
сервер думает, а код выполняется дальше,
внезапно сервер законцил думать и вернул результат, в связи с чем была вызвана функция callback прямо во время выполнения какой-то другой части кода.
выпоненен callback(),
код выполняется дальше,
код выполняется дальше...
Или даже так(в вашем случае):
Выполняется код,
выполняется,
выполняется,
выполняется по порядку,
тут раз - и асинхроннный запрос запросил что-то от сервера,
сервер думает, а код выполняется дальше по порядку,
сервер думает, а оставшийся код уже полностью выполнен и ничего не происходиит,
сервер думает, ничего более не происходиит,
внезапно сервер законцил думать и вернул результат, в связи с чем была вызвана функция callback.
выпоненен callback(),
ничего более не происходиит...
Т.о. вы вызываете функцию когда сервер ещё не закончил думать. Естесно переменная ещё undefined.
В яндексе работают умные ребята, там должны быть функции для таких случаев. Накрайняк обращаться к переменной с интервалом до тех пор пока там не появитсчся значение.
__________________
29375, 35
Последний раз редактировалось Aetae, 29.07.2012 в 00:43.
|