Переменные JavaScript, jQuery

Рейтинг: 0Ответов: 1Опубликовано: 20.09.2014

Помогите понять, почему не работает следующий код:

var mass1;
$.get("info.txt", function(data){
   mass1 = data;
   alert("Data Loaded 1 : " + mass1);
});
alert("Data Loaded 2 : " + mass1);

alert Data Loaded 1 выдает верные данные, а alert Data Loaded 2 пуст!

Буду благодарен за ответ.

Леонид (l.lisachenko@gmail.com).

Ответы

▲ 3

Метод get асинхронный. Поэтому на момент вызова alert("Data Loaded 2 : " + mass1); данные еще не загружены с сервера. Происходит все как-то так:

var mass1; // объявляем глобальную переменную, что есть нехорошо.
// Отправляем запрос на сервер. Когда сервер вернет ответ вызываем callback-функцию. НО НЕ РАНЬШЕ, чем будет выполнен остальной код.
$.get("info.txt", function(data){ 
  mass1 = data;
  alert("Data Loaded 1 : " + mass1); });
// НЕ ДОЖИДАЯСЬ ответа сервера выполняем код дальше
alert("Data Loaded 2 : " + mass1); // очевидно, что тут в mass1 ничего быть не может.

Для полноты понимания погуглите про событийный цикл и асинхроннось в javascript.