Привет! Я использую функцию более высокого порядка для извлечения данных и использования ее в основном потоке. Что я хочу сделать, так это когда в первом лямбда-выражении возникает исключение, выполнение функции высшего порядка прекращается. это декларация функции:
object Coroutines {
fun <T : Any> ioThenMain(work: suspend (() -> T?), callback: ((T?) -> Unit)) =
CoroutineScope(Dispatchers.Main).launch {
val data = CoroutineScope(Dispatchers.IO).async rt@{
return@rt work()
}.await()
callback(data)
}
}
Я использую это так
Coroutines.ioThenMain(
work@{
try{
repository.getContactDetails(contactList)
}catch(e: Exception){
ContactListResponse(listOf())
} },
{ _contacts.value = it?.data }
)
Я хочу вернуться показать некоторые исключения и вернуться из функции ioThenMain
, но я не может сделать это, потому что тип возвращаемого значения функции станет Unit?
типом, и это даст мне ошибку во второй лямбде, любое предложение будет полезно.