【问题标题】:How to create an Observable from a Deferred future using Kotlin coroutines如何使用 Kotlin 协程从延迟的未来创建 Observable
【发布时间】:2018-11-08 14:46:43
【问题描述】:

我正在尝试使用 Futures 和 Coroutines 创建一个 Observable。

这是我尝试过的:

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

        return Observable.just(deferred.await())
    }

但我收到以下错误:

暂停函数 'await' 只能从协程调用或 另一个挂起函数。

有没有办法做到这一点?

【问题讨论】:

  • 听起来是个很糟糕的主意......协程在这方面根本帮不了你,它们的目的是从你的代码中消除 ObservableFuture

标签: kotlin rx-java observable kotlinx.coroutines


【解决方案1】:

您可以使用kotlinx-coroutines-rx2 连接到响应式世界:

rxSingle { deferred.await() }

从那里调用toObservable() 就可以轻松获得Observable

【讨论】:

  • deferred.asSingle()会更简单。
猜你喜欢
  • 2019-01-15
  • 2020-09-15
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多