сеть, вторая функция возвращает результат и присваевает его в глобальную переменную. А третья функция изначально вызвала первую функцию и должна ждать, когда глобальная переменная получит данные, затем выполнится return globalVariable. Использовать коллбэк нельзя. Сейчас реализовано таким образом:
override fun getDataById(id: String): Data {
getDataByIdFromJs(id)
while (data == null) {
Thread.sleep(200)
}
val m = data?.copy()
data = null
return m!!
}
Какие есть варианты, чтобы избавится от костыля в виде цикла и thread.sleep? Как заблокировать выполнение метода, пока переменная равна null?
почему использовать callbak нельзя?
Не надо использовать глобальную переменную вообще.
Взять корутины и async await
в getDataByIdFromJson нельзя какой-нибудь wait/notify заюзать или CountDownLatch?
Обсуждают сегодня