保留 'monitoring' 一个 API 端点,直到我使用 Angular HttpClient 获得我的值
Keep 'monitoring' an API endpoint until I get my value with Angular HttpClient
我有一个 API 端点,当查询时 returns 一组当时已处理的特定对象的状态更新。
例如{ 对象:10,已处理:5)
我想用我的 Angular 5 HttpClient 创建一个 observable,它将继续查询此 API(例如,每 1 秒),直到我得到我想要的结果(对象:10,已处理: 10).
我的想法是创建一个 Observable,将这些中间 "status" 更新作为事件传输,并在满足条件时传输 Complete 事件。
令我困惑的是事实:
* HttpClient 是冷流
* 它在 API.
的单个响应后完成的事实
所以我不得不不断创建新的可观察对象 (HttpClient) 请求,然后不断将它们合并到我自己的单个可观察对象中。
关于如何使用 RxJS 和 Angular 5 解决这个问题的任何想法?
提前致谢
你可以这样做:
Observable.interval(1000)
.flatMap(() => this.someService.callApi())
.filter(actualResult => actualResult === expectedResult)
.takeWhile(actualResult => actualResult === expectedResult)
.subscribe(() => // handle your data here)
这将每秒启动一个间隔流,将其转换为 API 调用结果的可观察对象,它将继续,直到找到所需的结果。
我有一个 API 端点,当查询时 returns 一组当时已处理的特定对象的状态更新。
例如{ 对象:10,已处理:5)
我想用我的 Angular 5 HttpClient 创建一个 observable,它将继续查询此 API(例如,每 1 秒),直到我得到我想要的结果(对象:10,已处理: 10).
我的想法是创建一个 Observable,将这些中间 "status" 更新作为事件传输,并在满足条件时传输 Complete 事件。
令我困惑的是事实: * HttpClient 是冷流 * 它在 API.
的单个响应后完成的事实所以我不得不不断创建新的可观察对象 (HttpClient) 请求,然后不断将它们合并到我自己的单个可观察对象中。
关于如何使用 RxJS 和 Angular 5 解决这个问题的任何想法?
提前致谢
你可以这样做:
Observable.interval(1000)
.flatMap(() => this.someService.callApi())
.filter(actualResult => actualResult === expectedResult)
.takeWhile(actualResult => actualResult === expectedResult)
.subscribe(() => // handle your data here)
这将每秒启动一个间隔流,将其转换为 API 调用结果的可观察对象,它将继续,直到找到所需的结果。