Dav*_*vid 5 observable rxjs angular
我基本上想实现一个可观察的池消费者。
\n\n因此,服务会发出 http 调用来检索多个结果,然后组件会逐一使用这些结果。\n当服务检测到结果用完时,它将再次调用服务器以获取多个结果。新的结果。
\n\n我开始尝试每次进行单个 http 调用并订阅和取消订阅,但它看起来相当混乱和令人困惑。
\n\n我想要这样的东西:
\n\nthis.http\n .post(API, postData)\n .map((response: Response) => response.json())\n .subscribe(data => this.saveData(data))\n .repeat(when_certain_condition)\nRun Code Online (Sandbox Code Playgroud)\n\n有什么办法可以实现这一点吗?我读到了有关重复的内容,但似乎您需要提供要重复的值,因此 \xc2\xb4t 似乎不是可行的方法。
\n\n有什么想法吗?\n谢谢
\n我遇到了同样的情况,我用以下方法解决了。
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();
Run Code Online (Sandbox Code Playgroud)
解释:
flatMap()将 Observable 发出的项目转换为 ObservablesObservable.throw()强制错误,这样retry()就会调用delay(2000),这样我会等待 2 秒,然后重试另一个呼叫| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |