确定我的服务已完成加载和处理 HTTP get 请求的最佳方法是什么?

What's the best way to determine my service is done loading & processing a HTTP get request?

我在 Angular JS 中有一项服务,它基本上执行 HTTP GET 和一些 post- 处理,如下所示:

angular.module('myApp')
  .service('graphDataService', function($http) {
    this.getGraphData() {
      $http.get('http://localhost:32105/chartData')
        .then(function(result) {
          // Perform post processing here   
        });
    };
  });

在 GET 请求和 post 处理完成后与我的控制器进行通信的最佳方式是什么?我试图在我的服务中创建一个 this.doneLoading 变量,但我无法从异步代码访问它。

我在 Angular 还是个新手,所以任何建议或批评都将不胜感激。谢谢!

$http.get() return 是您随后调用 .then() 的承诺。我认为正确的解决方案是让服务 return 承诺而不是通知调用者。

Here's more information on how these promises work

如果您需要在您的服务中进行 post 处理,您应该创建自己的承诺,并且 return 它就像 A.B 在他的示例中显示的那样。 :)

您可以使用 promise 和 return promise,或者应该使用 defer 或 resolve 方法

使用 $q

angular.module('myApp')
  .service('graphDataService', function($http,$q) {
    var defer = $q.defer();
    this.getGraphData() {
      $http.get('http://localhost:32105/chartData')
        .success(function(result) {
           defer.resolve(result);
        });
    };
    return defer.promise;
  });

现在您可以在控制器中使用 then()