Как происходит возврат значения из функции

Всем привет, вопрос небольшой:

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 шт):

Автор решения: Sergei Buvaka

Ваша функция сразу же вернет вам объект data, т.к. программа не будет дожидаться результатов выполнения запроса. Эта data является LiveData-ой, соответственно вы можете на нее просто подписаться и как только вызовется onResponse() все подписчики будут уведомлены об этом.

→ Ссылка