louiscad
04/08/2019, 7:44 PMsuspend fun <T> raceOf(vararg racers: suspend CoroutineScope.() -> T): T = coroutineScope {
select<T> {
@UseExperimental(ExperimentalCoroutinesApi::class)
val racersAsyncList = racers.map { async(start = CoroutineStart.UNDISPATCHED, block = it) }
racersAsyncList.forEach { racer ->
racer.onAwait { resultOfWinner ->
racersAsyncList.forEach { deferred -> deferred.cancel() }
return@onAwait resultOfWinner
}
}
}
}
spand
04/08/2019, 7:58 PMinvokeAny
but is quite vague. What is it called in golang?simon.vergauwen
04/08/2019, 8:44 PMraceN