asDeferred
Creates a view of this CompletableDeferred as a Deferred, which prevents downcasting to a completable version.
class MyClass(val scope: CoroutineScope) {
// can be completed
private val actualDeferred: CompletableDeferred<String> = CompletableDeferred()
// can not be completed from outside
public val operationCompleted: Deferred<String> = actualDeferred.asDeferred()
fun startOperation() = scope.launch {
// do some work
delay(2.seconds)
actualDeferred.complete("Done")
}
}
// (myClass.operationCompleted as CompletableDeferred<*>) will failContent copied to clipboard