使用RXJS的Angular 5$http轮询
我正在尝试创建一个轮询服务,这就是我所实现的。 目标是在响应包含特定值(例如running:false)时停止轮询 问题是它只会发射一次。 我做错了什么?这是因为concatMap会等待其内部可观察对象完成使用RXJS的Angular 5$http轮询,rxjs,angular5,polling,Rxjs,Angular5,Polling,我正在尝试创建一个轮询服务,这就是我所实现的。 目标是在响应包含特定值(例如running:false)时停止轮询 问题是它只会发射一次。 我做错了什么?这是因为concatMap会等待其内部可观察对象完成 在您的_getData中,您返回新的Observable,然后自己调用next,但您从未调用complete,因此Observable保持打开状态。然后concatMap将不再调用其project方法,因为它正在等待前一个可观察对象完成。oops。我完全忘了,真是个傻瓜。谢谢。 // Sam
在您的_getData中,您返回新的Observable,然后自己调用next,但您从未调用complete,因此Observable保持打开状态。然后concatMap将不再调用其project方法,因为它正在等待前一个可观察对象完成。oops。我完全忘了,真是个傻瓜。谢谢。
// Sample call
_getData(): Observable<any> {
return new Observable((observer) => {
setTimeout(() => {
observer.next({ data: "bar", running: true });
}, 2000)
})
}
start() {
timer(0, 5000)
.pipe(
concatMap(() => from(this._getData())
.pipe(map(response => response))
)
)
// .pipe(filter(backendData => backendData.running === true))
.subscribe(() => console.info("CIAO" + ++calls))
}