我有一個Angular服務,它使用$ q創建一個承諾,返回到Angular控制器層。在該服務內部,它會對數據進行異步$ http.get請求。AngularJS承諾 - 如果數據仍在加載導航離開頁面時出錯
當用戶更改爲我們的Intranet的另一個區域時,他們正在重新加載一個新頁面。該導航操作導致承諾失敗(如果您不等待數據異步加載) 在我們的應用程序中失敗的承諾顯示自定義錯誤消息對話框。
處理這個問題的最佳方法是什麼?這是一個已知的問題?我們不希望用戶在瀏覽頁面時看到錯誤消息。這是因爲在瀏覽頁面時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()的函數需要一個您未使用的參數。你可以看看這個區分由於真正失敗導航而取消的請求。 –