繁体   English   中英

RxJava Retrofit2 api 使用订阅或平面图进行多次调用

[英]RxJava Retrofit2 api multiple calls using subscribe or flatmap

我正在使用 Retrofit2 和 RxJava 进行 API 调用。 问题是我想使用从第一个 api 调用收到的响应(在本例中为整数)进行第二个 API 调用。 我怀疑这两者

Disposable subscribe(@NonNull Consumer<? super T> onSuccess, @NonNull Consumer<? super Throwable> onError)方法和

    <R> Single<R> flatMap(@NonNull Function<? super T, ? extends SingleSource<? extends R>> mapper

看起来可以使用第一个 api 调用的结果来调用第二个 api 调用。 那么,我应该使用哪种方法( subscribeflatMap )来进行第二次 api 调用,结果是第一次调用,为什么? 我是否必须使用一个或另一个取决于第一个 api 调用的结果是否可迭代?

我想你想要这样的东西:

fun firstRequest(): Single<Int> = Single.just(10)

fun secondRequest(valueFromFirst: Int): Single<Int> = Single.just(valueFromFirst*2)

fun mappedRequest(): Single<Int> {
  return firstRequest().flatMap {
    secondRequest(it)
  }
}

因此,现在您可以从任何地方访问 mappedRequest()。 您可以通过以下方式“准备”您的请求:

val requestSingle = mappedRequest()

在这种情况下,您只有一个。 该请求尚未运行,但已准备好运行。 为了有效地运行它:

requestSingle.subscribe { handleResult(it) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM