我想实现一个返回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;