Как вернуть Отложено с мгновенным результатом? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть условный оператор, который должен возвращать Deferred результат в обоих случаях, но я не знаю, как вручную создать Deferred объект с предопределенным результатом.Вот снимок кода:

val deferredResult = if (condition) {
   callSuspendFunction(params)
} else {
  deferred???
}

callSuspendFunction возвращает результат операции async.Хотя я могу написать что-то вроде coroutineScope { async { result } } вместо deferred???, но это выглядит совсем не так, как должно быть.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете использовать CompletableDeferred, см. https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-completable-deferred/

val value = if(true) {
    callSuspendFunction(params)
} else {
    CompletableDeferred(10)
}
0 голосов
/ 13 ноября 2018

вы можете использовать только ниже.В первом случае он вернет int, а во втором - логическое

   val deferredResult = if (condition) {
        3
    } else {
      true
    }
.
...