Я новичок в RxJS.
У меня есть обещанный базовый HTTP-клиент. У него есть метод login(), который извлекает токен с сервера и сохраняет его внутри для использования другими методами.
По истечении срока действия токена сервер ответит ошибкой HTTP 401, и в этом случае я хочу снова вызвать login() и повторить запрос. Также повторите попытку для других типов ошибок.
Я не уверен, как смоделировать это в RxJS, у меня есть что-то работающее, но я надеюсь, что есть лучший способ сделать это.
(это внутри декоратора, который применяется ко всем методам, требующим аутентификации, здесь wrappedFunc)
return interval(100)
.pipe(
startWith(0),
switchMap(() => {
return wrappedFunc.apply(this, args)
}),
retryWhen(errors$ => errors$.pipe(
switchMap((error) => {
if (error.response.status === 401) {
return this.login()
} else {
return of(error)
}
}),
scan((attempts, currentError) => {
if (attempts > 5) {
throw currentError
}
return attempts + 1
}, 0),
)),
first()
)
Каков идиоматический способ обработки ошибок в RxJS?
interval(100)
? Это задерживает вызов wrappedFunc? - person m1ch4ls   schedule 21.08.2018