我有以下函數來獲取登錄用戶。我不得不說,我已經從教程中複製了代碼 - 因此我不知道在後臺發生了什麼。 幾分鐘後(20分鐘),沒有請求令牌不再有效,如果getCurrentUser()
被調用,我會得到一個白色的屏幕(來自後端的HTTP 401) - 我的錯誤攔截器$httpProvider.interceptors.push(errorInterceptor);
不會被調用。AngularJS從後端獲取當前用戶 - 錯誤攔截器
我現在的問題是如何處理這種情況。 ist可能強制getCurrentUser()中的errorInterceptor- invokation或如何處理?
function getCurrentUser() {
var deferred = $q.defer();
if(currentUser){
deferred.resolve(currentUser);
} else {
getCurrentUserFromAPI().success(function(data) {
if(data) {
currentUser = data;
return deferred.resolve(currentUser);
}
}).error(function(data) {
var token = authTokenService.getToken();
if(token) {
authTokenService.deleteToken();
}
return deferred.reject(data);
});
}
return deferred.promise;
}
[編輯]
這是我在底部攔截器,我認爲錯誤響應函數總是調用時,後端的響應錯誤 - 例如HTTP 401,但是當函數getCurrentUser被調用並且HTTP 401是來自服務器的響應時,不調用此方法 - 因此我得到一個白色屏幕。
其實我不知道該怎麼做才能防止這個白屏? 在這種情況下我能做什麼?
(function() {
'use strict';
angular
.module('myProject.error')
.config(configure);
configure.$inject = ['$httpProvider'];
function configure($httpProvider) {
$httpProvider.interceptors.push(errorInterceptor);
////////////
function errorInterceptor($injector, $q, $location) {
var interceptor = {
responseError: responseError
};
return interceptor;
////////////
function responseError(response) {
alert('responseError')
switch(response.status) {
case ...
}
return $q.reject(response);
}
}
}
})();
你的問題不清楚。請詳細說明。 – FrailWords