[英]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.