如何使用Kotlin协程从延期的未来创建一个Observable

kik*_*ike 4 observable kotlin rx-java kotlinx.coroutines

我正在尝试使用带有协程的期货创建一个Observable。

这是我尝试过的:

private fun getHelloObservable(): Observable<String>{
        val deferred = GlobalScope.async {
            "Hello"
        }

        return Observable.just(deferred.await())
    }
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

只能从协程或其他暂停函数调用暂停函数“ await”。

有没有办法做到这一点?

tyn*_*ynn 5

您可以kotlinx-coroutines-rx2用来桥接反应世界:

rxSingle { deferred.await() }
Run Code Online (Sandbox Code Playgroud)

从那里调用就像toObservable()实际获得一个一样容易Observable

  • Deferred.asSingle()甚至会更简单。 (2认同)