RxJava 单个最小执行时间



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

本答案中描述的相同方法似乎不适用于 Single。RxJava 可观察的最小执行时间

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

使用单曲实现此目的的最佳方法是什么?

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

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

如果使用 RxKotlin,则可以避免显式指定类型:

Singles.zip(
    apiGetUserSingle(),
    Single.timer(3, TimeUnit.SECONDS)
) { _, _ -> Unit }

最新更新