RxJava 单次最小执行时间

RxJava Single minimum execution time

我试图在网络请求期间在 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 }