#kotlin
Давненько на канале не появлялось сообщений. 🙄 Но я снова с вами, и сегодня предлагаю обсудить ключевое слово select, но только не в контексте SQL-запросов, а в контексте Coroutines.
В мобильной разработке его можно использовать для кейсов, когда у нас есть несколько suspend-функций, но нас интересует результат только той, которая завершится первой.
Небольшой пример:
val winner = select<String> {
data1().onAwait { it }
data2().onAwait { it }
}
println("The winner = $winner") // prints "The winner = Hello"Функции data1 и data2 — это простейшие вызовы с delay:
fun data1() = GlobalScope.async {
delay(1000)
"Hello"
}
fun data2() = GlobalScope.async {
delay(2000)
"World"
}В общем, ещё один суперполезный инструмент при использовании Coroutines. Подробнее можно почитать тут.