Is there an idiom for waiting for a Deferred and d...
# coroutines
p
Is there an idiom for waiting for a Deferred and defaulting to null (or some predefined result)? I have a Deferred, and needed its result or null.
s
Something like this?
Copy code
deferred.join()
val result = if (deferred.isCancelled) null else deferred.getCompleted()
p
Yes, something like that. Mine version is:
Copy code
suspend inline fun <T> awaitOrNull(deferred: Deferred<T?>): T? = runCatching { deferred.await() }.getOrNull()
or rather
Copy code
private suspend fun <T> Deferred<T>.awaitOrNull(): T? = runCatching { this.await() }.getOrNull()