我有这段代码:
var updateLogin = function updateLogin() {
var parameters = $location.search();
if(parameters.votoken) {
// return a promise
return authenticationService.updateCurrentToken(parameters);
}
//just logout and redirect to match another route
authenticationService.logout()['finally'](function logoutComplete() {
$location.url('/unauthorized');
});
}
var redirectToHome = function redirectToHome() {
$injector.invoke(updateLogin).then(() => {
//some action here
});
}
redirectToHome();
如你所见,
如果updateLogin
方法匹配一个条件它将返回一个promise并且它工作正常,但如果没有,该方法不会返回一个promise并将用户重定向到一个新位置,然后我在控制台{{1}上收到此错误它显而易见的原因。我想知道避免这种情况的最佳方法是什么。如果我返回Cannot read property 'then' of undefined
承诺,我怎么知道我是否需要在authenticationService.logout()
代码段上执行此方法$location.url('/unauthorized');
?