Angular 保持';监测';API端点,直到我通过HttpClient获得我的值

Angular 保持';监测';API端点,直到我通过HttpClient获得我的值,angular,rxjs,observable,reactivex,Angular,Rxjs,Observable,Reactivex,我有一个API端点,当查询该端点时,它将返回一组特定对象的状态更新,这些对象在当时已被处理 例如{对象:10个,已处理:5个) 我希望使用Angular 5 HttpClient创建一个observable,它将继续查询此API(例如,每1秒一次),直到得到我想要的结果(对象:10,处理:10) 我的想法是创建一个可观察对象,将这些中间“状态”更新作为事件传输,并在满足条件时传输完整事件 让我困惑的是以下事实: *HttpClient是一个冷流 *它在来自API的单个响应之后完成的事实 所以我必

我有一个API端点,当查询该端点时,它将返回一组特定对象的状态更新,这些对象在当时已被处理

例如{对象:10个,已处理:5个)

我希望使用Angular 5 HttpClient创建一个observable,它将继续查询此API(例如,每1秒一次),直到得到我想要的结果(对象:10,处理:10)

我的想法是创建一个可观察对象,将这些中间“状态”更新作为事件传输,并在满足条件时传输完整事件

让我困惑的是以下事实: *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调用结果的可观察值,并将继续进行,直到找到所需的结果。

trusted Rxjs.flatMap?