Как происходит возврат значения из функции
Всем привет, вопрос небольшой:
class UserRepository {
private val webservice: Webservice = TODO()
fun getUser(userId: String): LiveData<User> {
val data = MutableLiveData<User>()
webservice.getUser(userId).enqueue(object : Callback<User> {
override fun onResponse(call: Call<User>, response: Response<User>) {
data.value = response.body()
}
override fun onFailure(call: Call<User>, t: Throwable) {
TODO()
}
})
return data
}
}
Когда в данном фрагменте кода будет исполнено "return data" (т.е. произведён выход из функции)? Вижу, что посылается асинхронный запрос, но означает ли это, что функция вернёт значение, а когда ответ на запрос придёт, то оно обновится? Т.е., другими словами: после отправления запроса функция сразу вернёт data, или она вернёт data только когда придёт ответ на запрос?
Ответы (1 шт):
Ваша функция сразу же вернет вам объект data, т.к. программа не будет дожидаться результатов выполнения запроса. Эта data является LiveData-ой, соответственно вы можете на нее просто подписаться и как только вызовется onResponse() все подписчики будут уведомлены об этом.