서비스 중 $http 응답 처리
최근 문제에서는 $를 성공적으로 처리한 후 보기가 업데이트되지 않는 문제가 발생했습니다. 귀하의 http 요청 service.
해결책:
이 문제를 해결하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!