我正在尝试为自己的动作写一个效果。它有2种服务方法:内部为getData()
和checkToken()
。
它将引发错误:
“错误错误:影响“ IndexEffects.loginStatusValidate $”调度了无效操作:未定义“
我该怎么办?
@Effect()
loginStatusValidate$: Observable<Action> = this.actions$.pipe(
ofType(IndexActionTypes.LoginStatusValidate),
switchMap(() =>
this.authService.getData().pipe(
map(oldToken => {
if (oldToken) {
console.log("oldToken exsits");
this.authService.checkToken().subscribe((newToken) => {
console.log(newToken);
// Throw error if I try to dispatch action here
return new LoginStatusValidateSuccess(newToken);
});
// It's fine if I just dispatch action here
//return new LoginStatusValidateSuccess('');
} else {
return new LoginStatusValidateError();
}
})
)
)
);
getData() {
return of(localStorage.getItem('ACCESS_TOKEN'));
}
checkToken(){
// access api refresh token
return of("newToken");
}
答案 0 :(得分:1)
问题出在this.authService.checkToken().subscribe((newToken) => {
上,这样做不是在返回任何东西,而是在返回undefined
。
您已订阅,相反,您必须返回一系列操作,就像使用this.authService.getData().pipe
一样。