Обещание в Котлине с Android - PullRequest
2 голосов
/ 10 октября 2019

Как нам добиться модели обещаний в Android ?. Здесь я попал в ситуацию, как перед тем, как вывести пользователя на главный экран, я хочу проверить, все ли необходимые компоненты загружены или нет? Что-то вроде

    loadLibA().
        then().
loadLibB().
then().
loadLibc().
then()
}```

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

Вы можете реализовать шаблон обещаний, например

fun postItem(item: Item) {
preparePostAsync() 
    .thenCompose { token -> 
        submitPostAsync(token, item)
    }
    .thenAccept { post -> 
        processPost(post)
    }

}

fun preparePostAsync(): Promise<Token> {
// makes request an returns a promise that is completed later
return promise 
}

Пожалуйста, обратитесь по этой ссылке Методы асинхронного программирования Kotlin

2 голосов
/ 10 октября 2019

В Kotlin вы бы использовали сопрограммы, которые работают как обещания под капотом, но выглядят как простой серийный код:

suspend fun loadLibA() { ... }
suspend fun loadLibB() { ... }
suspend fun loadLibC() { ... }

GlobalScope.launch(Dispatchers.Main) {
    loadLibA() // Execution will stop here without blocking, until Lib A is loaded
    loadLibB() // Same as for A
    loadLibc() // Same as for A
    startHomeScreen() // Normal call to launch Home screen
}

Пример кода, конечно, упрощен, просто чтобы передать идею. Вы можете узнать о них из официальных документов .

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