繁体   English   中英

在 Kotlin 中从 Observable 转换为 Mono

[英]Conversion from Observable to Mono in Kotlin

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

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

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

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

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

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

这样我们可以实现但不确定性能部分。

因为那里有 Rx -> Rx -> Reactor 转换。 有人可以通过查看 couchbase SDK 4.x(最近推出)告诉我,前提是存在一些转换问题。

Mono.fromDirect(RxReactiveStreams.toPublisher(scopeRepository.couchbaseOperations.insert(scope)))

试试这个,但是这个线程阻塞了 model。

public Mono<String> GetData(Observable<String> inputData) {
    return Mono.fromCallable(() -> inputData.blockingFirst(""));        
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM