Я хочу реализовать функцию, которая возвращает Observable
, отправляет запрос на сервер и ждет ответа в течение некоторого времени.Если в течение этого времени ответ не получен, Observable
выдает значение из некоторой переменной / кэша.Но после получения ответа Observable
испускается снова, но с реальным ответом.Если ответ был получен вовремя, Observable
испускает только одно значение (реальный ответ).
Сначала я попытался использовать оператор timeout
, но проблема в том, что этот оператор прерывает запрос и выдает исключение.Прямо сейчас мое решение выглядит ужасно.Могу ли я сделать это в одной трубе?
Мой текущий код:
`let subject = new Subject ();пусть закончено = ложно;
let request = this.http.post(`/url`)
.pipe(
tap(() => {
finished = true;
}),
).subscribe((x) => subject.next(x));
timer(3000).subscribe(() => {
if (!finished) {
console.log("FROM BUFFER");
subject.next(bufferedItem);
}
}
});
return subject;