kotlin - RxJava Single最小执行时间

标签 kotlin rx-java

我正在尝试在网络请求期间在UI中显示进度条至少3秒钟。

此答案中描述的相同方法似乎不适用于Single。
RxJava Observable minimum execution time

Single.mergeDelayError(
    apiGetUserSingle(), 
    Single.timer(3, TimeUnit.SECONDS)
)
    .reduce { _, _ -> Unit }
    .compose(schedulerProvider.ioToMainSingleScheduler())


private fun apiGetUserSingle(): Single<User> // Network request

但我看到一个错误:MaybeTransformer cannot be applied to SingleTransformer
用Single实现此的最佳方法是什么?

最佳答案

您可以尝试使用zip运算符:

 Single.zip(
        apiGetUserSingle(),
        Single.timer(3, TimeUnit.SECONDS),
        BiFunction<User, Long, Unit> { _, _ -> Unit })

如果使用RxKotlin,则可以避免明确指定类型:
Singles.zip(
    apiGetUserSingle(),
    Single.timer(3, TimeUnit.SECONDS)
) { _, _ -> Unit }

关于kotlin - RxJava Single最小执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55426669/

相关文章:

android - 在 Android Kotlin 中使文本一个接一个地出现(又名打字机效果)

android - 如何使用 rxjava 为列表中的每个项目发出改造 api 请求?

java - 为什么 RxJava Observable.doOnDispose 会触发两次?

java - 如何通过可迭代/列表动态链接可观察对象?

android - 使用 AppCompatButton 崩溃的 MaterialTimePicker 无法转换为 MaterialButton

Android 导航组件 Unresolved reference

android - 由 java.lang.RuntimeException : Missing type parameter 引起

java - 如何清理使用 .create(OnSubscribe) 方法创建的 Observable

rx-java - RxJava - 将冷可观察对象转换为热可观察对象

java - Android 中出现空指针异常问题