每次在Angular 2中满足条件时,rxJS即可观察到重复调用

大卫

我基本上想实现一个可观察的池使用者。

因此,服务进行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();

说明:

  1. 您需要使用将a flatMap()Observable发出的项目转换为Observables
  2. 您需要使用Observable.throw()强制错误,以这种方式retry()将调用
  3. 我使用了delay(2000),这样我要等待2秒钟才能重试另一个呼叫

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在angular2中手动引发可观察到的错误?

Angular 2可观察到多个订户

angular2等到条件可观察到完成

Angular 2无法在可观察到的回调中访问它

Angular2 @ TypeScript可观察到的错误

Angular2-在routerOnDeactivate()中可观察到的停止/取消/清除

Angular 2,可观察到的共享服务中的并发性

在Angular2中可观察到的组件属性变化

Angular 2缓存可观察到的http结果数据

可观察到的服务在组件NgOnInIt中不起作用-Angular2

每次调用Angular Service时都会重置

Rxjs可观察到,直到满足某些条件

Angular HTTP可观察到的元组

Angular RxJS可观察到的加载错误

rxjs + angular:错误“杀死”可观察到的Web服务调用错误

等待可观察到的RxJS时在Angular中显示加载指示器

在Angular中使用if条件等待可观察到的响应

使用RxJS过滤单个值并返回可观察到的值,并通过Angular模板中的async使用可观察到的值

订阅Angular 8中可观察到组件的问题

Angular RxJS-无法使冷可观察到热

Angular 8:从可观察到的RxJS中过滤结果(来自Angular.io教程)

尝试向API发出多个请求时出现TypeScript可观察到的错误(Angular,TypeScript,RxJS)

Angular2 TypeScript可观察到的问题

RxJS可观察-每次满足条件时订阅一次

angular2 rxjs可观察到的forkjoin

每次单击Angular都会进行API调用

Angular2 http调用和典型的可观察到的问题

如何取消订阅或处理Angular2或RxJS中可观察到的间隔?

Angular2可观察到的回调