У меня есть некоторый код Java, который в какой-то момент должен приостановить и дождаться результата. Я пытаюсь решить эту проблему с помощью Kotlin сопрограмм.
Метод BuilderKt asyn c позволяет мне успешно перенести работу в фоновый режим. Но мне неясно, как сделать неблокирующее ожидание результата.
Вот как я настраиваю работу (и получаю Отложенный):
Deferred<T> deferred = BuildersKt.async(GlobalScope.INSTANCE, Dispatchers.getIO(), CoroutineStart.DEFAULT, new Function2<CoroutineScope, Continuation<? super T>, T>() {
@Override
public T invoke(CoroutineScope coroutineScope, Continuation<? super T> continuation) {
return /* Do some work and return a T */;
}
});
Часть I У меня проблемы с ожиданием требует продолжения и ничего не возвращает
deferred.await(new Continuation<T>() {
@NotNull
@Override
public CoroutineContext getContext() {
return ???;
}
@Override
public void resumeWith(@NotNull Object o) {
???
}
});
Если я не могу заставить его сделать неблокирующее ожидание, мне нужно будет продолжить опрос, чтобы проверить, завершено ли это, что является очевидно, не правильный подход. Какие части этой головоломки мне не хватает?
В документации Kotlin нет примеров того, как использовать ее с Java, и нет полезного javado c для методов в продолжение