在服务中处理 $http 响应
在您最近的问题中,您遇到了一个问题,即成功处理 $http 后视图没有更新http 请求在你的
解决方案:
要解决此问题,您需要直接使用 Promise 及其“then”函数来处理异步返回的响应。这是一个示例:
app.factory('myService', function ($http) { var myService = { async: function () { // $http returns a promise var promise = $http.get('test.json').then(function (response) { // Process the response and return modified data return response.data; }); // Return the promise return promise; } }; return myService; }); app.controller('MainCtrl', function (myService, $scope) { // Call the async method and then do stuff with what is returned in the "then" function myService.async().then(function (data) { $scope.data = data; }); });
在此示例中,服务中的异步方法返回一个承诺。控制器调用此方法并使用“then”函数处理 Promise 的解析值。这允许您访问和操作响应数据并从控制器更新视图。
您还可以使用相同的技术缓存 $http 请求:
app.factory('myService', function ($http) { var promise; var myService = { async: function () { // If the promise doesn't exist, create it if (!promise) { promise = $http.get('test.json').then(function (response) { // Process the response and return modified data return response.data; }); } // Return the cached promise return promise; } }; return myService; });
这种方法确保$http 请求仅发出一次,从而提高了性能。
以上是如何在 AngularJS 服务中正确处理异步 $http 响应?的详细内容。更多信息请关注PHP中文网其他相关文章!