我基本上想实现一个可观察的池使用者。
因此,服务进行http调用以检索许多结果,然后组件正在逐一使用这些结果。当服务检测到结果用尽时,它将再次致电服务器以获取许多新结果。
我开始尝试进行单个http调用,并且每次都进行订阅和取消订阅,但这似乎很混乱且令人困惑。
我想要这样的东西:
this.http
.post(API, postData)
.map((response: Response) => response.json())
.subscribe(data => this.saveData(data))
.repeat(when_certain_condition)
有什么办法可以做到这一点?我读过有关repeat的文章,但似乎您需要提供要重复的值,因此似乎不可行。
有任何想法吗?谢谢
我遇到了同样的情况,并通过以下方法解决了。
this.http
.post(API, postData)
.map((response: Response) => response.json())
.delay(2000)
.flatMap(data => {
this.saveData(data);
if (when_certain_condition) {
return Observable.throw('retry');
} else {
return Observable.of(data);
}
}).retry().subscribe();
说明:
flatMap()
Observable发出的项目转换为ObservablesObservable.throw()
强制错误,以这种方式retry()
将调用delay(2000)
,这样我要等待2秒钟才能重试另一个呼叫本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句