使用RxJava的请求队列



我需要与RxJavaRetrofit实现同步调用。我有一个id的ArrayList。我需要迭代这个数组,并使用Retrofit为每个id调用web服务器,但我知道如何只异步地做到这一点,你能告诉我如何做到这一点,就像在队列中,当一个调用完成后,下一个调用开始。

你的问题措辞很含糊,但我想我可能已经明白了。从一个项目列表开始,你可以用from()创建一个可观察对象。这些值可以在API调用之后进行映射。使用concatMap()可以保证结果的顺序,因此您可以有效地在结果之上获得一个可观察对象。你可以做任何你想做的事情,甚至可以调用toBlocking(),使可观察对象同步。但这应该没有任何必要。

List<Result> results =
        Observable.from(ids)
                  .concatMap(id -> callToWebServer(id))
                  .toList()
                  .toBlocking()
                  .single();

这段代码将同步执行它们

Observable.from(ids)
          .map(id -> callToWebServer(id).toBlocking().first())

但是您需要在map()中仔细处理来自callToWebServer()的所有网络错误。

相关内容

  • 没有找到相关文章

最新更新