保留 '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 调用结果的可观察对象,它将继续,直到找到所需的结果。