首页 > 解决方案 > 在 Kotlin 中从 Observable 转换为 Mono

问题描述

试图插入 couchbase 并且具有可观察的返回类型但想要单声道,因此这样做了。它正在编译,但在运行时它永远卡在转换阶段(即 Mono.from { obs })。

    fun saveScopeId(scopeId: ScopeId): Mono<ScopeId> {        
    val obs = scopeRepository.couchbaseOperations.insert(scopeId)
    return Mono.from<ScopeId> { obs }
}

标签: javaspring-bootkotlinreactive-programmingreactive

解决方案


Observable 可以生成多个值,但是如果您可以保证它将是一个项目(我假设这就是您要在Mono此处使用的原因),则可以Mono.fromDirect这样使用:

Mono.fromDirect(yourObservable.toFlowable(BackpressureStrategy.BUFFER));

正如您在示例中看到的,使用了toFlowable方法。

您应该看到其他背压策略: 这里


推荐阅读