确定我的服务已完成加载和处理 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()
我在 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()