victorA
@victorA
Front-End developer

Вернуть результат AJAX запроса?

Как сделать, чтоб функция вернула результат после AJAX запроса.

Calculator.prototype.getJSonData = function() {
      var ajax = new XMLHttpRequest();
      var url = 'data.json';
      var data = {};


      ajax.onreadystatechange = function() {
        if (ajax.readyState == 4 && ajax.status == 200) {
          data = JSON.parse(ajax.responseText);
        }
      };


      ajax.open("GET", url, true);
      ajax.send();

      return data;

  };
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Никак, return не имеет смысла в асинхронных запросах. Вы должны использовать коллбэк или промис. Примерно так:

Calculator.prototype.getJSonData = function() {
      ajax.onreadystatechange = function() {
        if (ajax.readyState == 4 && ajax.status == 200) {
          nextStep(data); // вызываем следущий шаг
        }
      };
  };

function nextStep (data) {
    // тут продолжаем выполнение кода
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы