Вы можете получить код состояния в операторе retryWhen следующим образом:
getRequest(url: string, retryCount = 2) {
return this.http.get(url).pipe(
retryWhen(errors => errors.pipe(
mergeMap((error, i) => i < retryCount ? timer(2000) : throwError(error)
)
))
);
}
getRequest('api').subscribe(
() => { }, // success
error => console.log(error.status)
);
В приведенном выше коде в операторе retryWhen
мы улавливаем ошибку и повторяем запрос с 2 секундами задержки 2 времена, как вы делаете.
Затем мы выдаем ошибку и разбираемся с ней внутри функции ошибки вызова подписки.
Мы можем получить статус, извлекая свойство status
из входящей ошибки.
Надеюсь, я ответил на ваш вопрос:)