Java 如何使用反应式方法保存多次操作后获得的值
我想知道使用正确的反应式方法处理Mono或Flux的最佳方法 我想在几次运算后从Mono得到初始值。 例如:Java 如何使用反应式方法保存多次操作后获得的值,java,rx-java,reactor,Java,Rx Java,Reactor,我想知道使用正确的反应式方法处理Mono或Flux的最佳方法 我想在几次运算后从Mono得到初始值。 例如: public Mono<SomeObject> test(Mono<Object> object) { return object .map(this::buildRequestFromObject) .flatMap(this::sendRequest)
public Mono<SomeObject> test(Mono<Object> object) {
return object
.map(this::buildRequestFromObject)
.flatMap(this::sendRequest)
.flatMap(this::anotherUsefulWorkWithReturnImpotant) (1)
.then(object) <-- is it okay???
.onErrorResume(this::handleExceptionAndDoSomeWork) (2)
.doOnSuccess(object-> saveThisObject(object)) (3)
.then();
}
公共单声道测试(单声道对象){
回波信号
.map(此::buildRequestFromObject)
.flatMap(此::sendRequest)
.flatMap(此::另一个使用ReturnImportant的有用工作)(1)
。然后(对象)保存此对象(对象))(3)
.然后();
}
非常感谢你的帮助 不,这不是最好的方式,因为您订阅了两次输入
Mono
,这种方式可能不是您想要的。最好是更改您的程序流,以便此方法接受包含的对象
,而不是Mono
。我知道了,谢谢!但如果我需要从this::buildRequestFromObject
保存对象,以便在doOnAccess
(3)中使用它,该怎么办呢。这通常是如何发生的?当我需要在多个管道步骤中保留一个对象时,我通常将该部分流提取到一个私有方法中,该方法将该对象作为输入,然后我从主管道中的平面图调用私有方法。不,这不是最好的方式,因为您订阅了两次输入Mono
,这种方式可能不是您想要的。最好是更改您的程序流,以便此方法接受包含的对象
,而不是Mono
。我知道了,谢谢!但如果我需要从this::buildRequestFromObject
保存对象,以便在doOnAccess
(3)中使用它,该怎么办呢。这通常是如何发生的?当我需要在多个管道步骤中保留一个对象时,我通常将该部分流提取到一个私有方法中,该方法将该对象作为输入,然后从主管道中的平面图调用私有方法。