Возврат из функции kotlin высшего порядка перед выполнением всех лямбд - PullRequest
0 голосов
/ 18 апреля 2020

Привет! Я использую функцию более высокого порядка для извлечения данных и использования ее в основном потоке. Что я хочу сделать, так это когда в первом лямбда-выражении возникает исключение, выполнение функции высшего порядка прекращается. это декларация функции:

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? типом, и это даст мне ошибку во второй лямбде, любое предложение будет полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...