【问题标题】:Api calls chaining to some limit Rxjava2 + Retrofit2Api 调用链接到某个限制 Rxjava2 + Retrofit2
【发布时间】:2017-12-08 20:48:03
【问题描述】:

我正在使用 Retrofit2Rxjava 进行 API 调用。我必须进行多个 API 调用(同一个 API),比如说 100 个。现在我希望最多并行执行 5 个。所以如果 5 个 API 调用正在进行,第 6 个应该等待。一旦完成了正在进行的 5 个呼叫中的任何一个,就应该开始第 6 个。我不希望在前 5 个完成并且仅在接下来的 5 个发生之后才在 5 个中进行此操作。

我不确定如何使用Rxjava 实现,这就是为什么我没有任何sn-p 可以发布。任何帮助都会很棒

【问题讨论】:

  • 您正在处理的具体场景是什么?与其尝试在 RxJava 中创建它,不如着眼于核心问题,这是唯一的解决方案吗?

标签: android retrofit rx-java retrofit2 rx-java2


【解决方案1】:

RxJava 有一些可以限制线程数量的操作符。

observable
  .flatMap( input -> apiCallReturningObservable( input ), 5 )
  .subscribe();

一次最多可以调用 5 次 apiCallReturningObservable()

【讨论】:

  • 当五个工人中的一些人完成时它会自动调用第六个,还是会在提供的限制后切断?
  • 文档说它最终会映射所有值,但会限制同时订阅的数量。
  • 这正是我所需要的!
猜你喜欢
  • 2017-11-14
  • 2017-08-09
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 2017-11-20
  • 1970-01-01
相关资源
最近更新 更多