У меня есть Single от RxJava, и я хочу продолжить работу с Deferred from Kotlin Coroutines. Как это сделать?
fun convert(data: rx.Single<String>): kotlinx.coroutines.Deferred<String> = ...
Мне была бы интересна какая-нибудь библиотека (если она есть?), а также сделать это самостоятельно... Пока что я сделал эту ручную реализацию самостоятельно:
private fun waitForRxJavaResult(resultSingle: Single<String>): String? {
var resultReceived = false
var result: String? = null
resultSingle.subscribe({
result = it
resultReceived = true
}, {
resultReceived = true
if (!(it is NoSuchElementException))
it.printStackTrace()
})
while (!resultReceived)
Thread.sleep(20)
return result
}
Single
, вsuspend fun
, используя расширениеSingle.await()
. - person Roman Elizarov   schedule 17.05.2020awaitSingle()
, который доступен для любой реализацииPublisher
(включая Rx1). - person Roman Elizarov   schedule 18.05.2020