Я хочу создать эффект, который будет обновлять токен sh через временные интервалы после успешного входа пользователя. Мне также нужно выбрать refreshToken из магазина, и это становится слишком сложным для меня, и я не могу понять, как чтобы сделать это.
Эффект до сих пор
@Effect()
refreshAccessToken$ =
this.actions$.pipe(
ofType(AccountActionsTypes.AccountLoginSuccess),
map(() => {
interval(5000)
.pipe(
mapTo(() => this.store
.pipe(
select(selectRefreshToken),
map(refreshToken => {
if (refreshToken != '' && refreshToken != undefined) {
this.accountService.refreshToken(refreshToken)
.pipe(
map((response: { token: string }) => {
return {type: AccountActionsTypes.RefreshTokenSuccess, token: response.token};
})
);
} else {
return {type: AccountActionsTypes.RefreshTokenSuccess, token: ''};
}
})
)));
}));
Но я получаю эту ошибку введите описание изображения здесь
Может быть, кому-то это поможет, это эффект исправлен советом:
@Effect()
refreshAccessToken$ =
this.actions$.pipe(
ofType(AccountActionsTypes.AccountLoginSuccess),
switchMap(() => {
return interval(5000)
.pipe(
switchMap(() => this.store
.pipe(
select(selectRefreshToken),
switchMap((refreshToken) => this.accountService.refreshToken(refreshToken)
.pipe(
map((response: { token: string, status: string }) => {
if (response.token !== undefined) {
return {
type: AccountActionsTypes.RefreshTokenSuccess,
token: response.token,
};
} else {
return {type: AccountActionsTypes.RefreshTokenWrong, status: response.status};
}
})
))
)));
}));