如何修复AngularJS中未定义的Promise错误

时间:2019-03-28 09:28:19

标签: angularjs angular-promise

我试图在AngularJS中创建一个Promise:基本上,我需要调用发出HTTP请求的函数session.state(),然后返回一些数据。我无法立即访问数据,因为它们仍未定义且尚未返回,因此我试图建立一个承诺。

这是我到目前为止尝试过的:

这就是我叫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;
  });
};

这两段代码放在单独的服务中。

到目前为止,我仅从浏览器控制台收到“错误:session.state(...)未定义”错误。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您应该定义延迟并在异步操作之外将其返回,如下所示:


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

                dfd.resolve(response.data);

              });
               return dfd.promise;
            };