我有一个条件语句,在两种情况下都应返回Deferred
结果,但是我不知道如何手动创建具有预定义结果的Deferred
对象。这是代码快照:
val deferredResult = if (condition) {
callSuspendFunction(params)
} else {
deferred???
}
callSuspendFunction
返回async
操作的结果。尽管我可以写类似coroutineScope { async { result } }
的东西,而不是deferred???
,但是看起来确实不是应该的。
答案 0 :(得分:2)
您可以使用CompletableDeferred
,请参见https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-completable-deferred/
val value = if(true) {
callSuspendFunction(params)
} else {
CompletableDeferred(10)
}
答案 1 :(得分:-1)
您可以像下面那样仔细使用。 在第一种情况下,它将返回int,在第二种情况下,它将返回布尔值
val deferredResult = if (condition) {
3
} else {
true
}