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

How to fix undefined promise error in AngularJS

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

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

这是我打电话的地方 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;
  });
};

这两段代码放在不同的服务中。

到目前为止,我只从浏览器控制台收到 "Error: session.state(...) is undefined" 错误。我做错了什么?

你应该在你的异步操作之外定义 defer 和 return 它,像这样:


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

                dfd.resolve(response.data);

              });
               return dfd.promise;
            };