在 Kotlin 中从可观察转换为单声道



试图插入沙发底座,并且具有可观察的返回类型,但想要单声道,因此这样做了。 它的编译,但在运行时它永远卡在转换阶段(即 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 -> 反应堆转换。有人可以通过查看 couchbase SDK 4.x(最近推出(来告诉我,只有在存在一些转换问题时。

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

试试这个,但这个线程阻塞模型。

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

最新更新