Используя Rx JS 6.5, я подписываюсь на поток, и я хотел бы предпринять два различных действия: - одно, когда произошла ошибка источника, - другое, когда источник слишком долго отправляет данные (тайм-аут)
Вот то, что у меня в данный момент есть
source$.pipe(
timeoutWith(5000, log('timeout!')),
catchError(log('error!'))
).subscribe();
function log(msg) {
console.log(msg);
return of(null);
}
Когда мой источник излучает больше 5000 мс, я получаю ожидаемый результат: timeout!
Однако, когда мой источник выдает ошибку раньше ( до 5000 мс) обе строки выполняются. Кажется, что он timeoutWith
запускается всякий раз, когда источник не излучал, даже если он ошибался.
Как настроить канал так, чтобы тайм-аут logi c работал только, если время действительно истекло Не потому, что поток был прерван из-за ошибки?
Детская площадка