Как исправить неопределенную ошибку обещания в AngularJS - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь создать обещание в AngularJS: в основном мне нужно вызвать функцию session.state(), которая делает http-запрос, а затем возвращает некоторые данные.Я не могу сразу получить доступ к данным, потому что они все еще не определены и еще не возвращены, поэтому я попытался создать обещание.

Это то, что я пробовал до сих пор:

Это гдеЯ звоню session.state():

session.state()
  .then(function(data){
  if (data['state']) {
    self.plan = data['plan'];
    self.pool_interface = data['pool_interface'];
  }
  callback(data['state']);
});

и вот session.state() сам по себе:

self.state = function() {
  $http.get(self.baseUrl + 'api/session/state')
  .then(function(response) {
    var dfd = $q.defer();
    dfd.resolve(response.data);
    return dfd.promise;
  });
};

Два куска кода размещены в отдельных сервисах.

ИтакПока я получаю только ошибку «Ошибка: сессия.state (...) не определена» из консоли браузера.Что я делаю не так?

1 Ответ

1 голос
/ 28 марта 2019

вы должны определить defer и вернуть его вне вашей асинхронной операции, например:


           self.state = function() {
              var dfd = $q.defer();
              $http.get(self.baseUrl + 'api/session/state')
              .then(function(response) {

                dfd.resolve(response.data);

              });
               return dfd.promise;
            };
...