matej
10/05/2017, 5:06 PMelizarov
10/05/2017, 5:32 PMCompletableFuture
then it will not fly on API level < 24 anyway.matej
10/05/2017, 5:32 PMelizarov
10/05/2017, 5:33 PMelizarov
10/05/2017, 5:33 PMget
functionmatej
10/05/2017, 5:34 PMmatej
10/05/2017, 5:34 PMelizarov
10/05/2017, 5:34 PMFuture
interface on top of a Deferred
. To implement get
use runBlocking { deferred.await() }
, the cancel
just delegate, etc.matej
10/05/2017, 5:35 PMmatej
10/05/2017, 5:35 PMmatej
10/05/2017, 5:35 PMmatej
10/05/2017, 5:35 PMmatej
10/05/2017, 5:36 PMmatej
10/05/2017, 5:37 PMmatej
10/05/2017, 5:37 PMelizarov
10/05/2017, 5:37 PMmatej
10/05/2017, 5:37 PMmatej
10/05/2017, 5:38 PMmatej
10/05/2017, 5:39 PMmatej
10/05/2017, 5:39 PMclass DeferredFuture<T>(private val deferred: Deferred<T>) : Future<T> {
override fun isCancelled() = deferred.isCancelled
override fun cancel(mayInterruptIfRunning: Boolean) = deferred.cancel()
override fun isDone() = !deferred.isActive
override fun get() = runBlocking { deferred.await() }
override fun get(timeout: Long, unit: TimeUnit?) = runBlocking {
withTimeout(timeout, unit!!) { deferred.await() }
}
}
matej
10/05/2017, 5:41 PMelizarov
10/05/2017, 5:46 PMelizarov
10/05/2017, 5:47 PMoverride fun get(timeout: Long, unit: TimeUnit?)
remove the question mark from unit
type and you will not have to use double-bangmatej
10/05/2017, 5:54 PM