$ 각도를 사용하여 Angular 컨트롤러 레이어로 돌아갈 약속을 만드는 Angular 서비스가 있습니다. 해당 서비스 내에서 비동기 $ http.get 데이터 요청을 만듭니다.AngularJS Promise - 데이터가 아직로드되지 않은 상태에서 페이지를 탐색하는 동안 오류가 발생했습니다.
사용자가 인트라넷의 다른 영역으로 변경하면 새 페이지가 다시로드됩니다. 해당 네비게이션 동작으로 인해 약속이 실패합니다 (데이터가 비동기로드 될 때까지 기다리지 않는 경우) Google 앱에 실패하면 약속 오류 메시지 대화 상자가 표시됩니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 이것은 알려진 문제입니까? 사용자가 페이지를 탐색 할 때 오류 메시지가 표시되는 것을 원하지 않습니다. 이것은 XMLHttpRequests가 페이지에서 벗어날 때 취소된다는 것을 의미하기 때문입니까?
컨트롤러 코드 :
는$scope.showEmployees = function() {
employeeService.getEmployees().then(function(data) {
$scope.employees = data;
}, function(errorMessage) {
alertMessage(errorMessage);
});
};
서비스 코드 :
getEmployees: function() {
var deferred = $q.defer();
$http.get("/api/employees").success(function(data) {
deferred.resolve(data);
}).error(function() {
deferred.reject("An error occurred while retrieving data.");
});
return deferred.promise;
}
어쩌면 onbeforeunload 핸들러시 전역을 설정하고있는 경우 전역이 설정되어 있으면 오류 메시지가 표시되지 않습니까? 또는 .error()에 전달하는 함수는 사용하지 않는 매개 변수를 사용합니다. 실제 실패에서 탐색으로 인해 취소 된 요청을 구별하기 위해이를 볼 수 있습니다. –