RxJava Единственное минимальное время выполнения - PullRequest
1 голос
/ 30 марта 2019

Я пытаюсь показать индикатор выполнения в пользовательском интерфейсе не менее 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

Каков наилучший способ реализовать это с помощью Single?

1 Ответ

1 голос
/ 30 марта 2019

Вы можете попробовать использовать оператор zip:

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

Вы можете избежать явного указания типов, если используете RxKotlin:

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