删除多个订阅并将其保留为单个流
Remove multiple subscription and keep it to a single flow
我有以下方法,它按预期工作。
但是有没有办法修改它,这样我就不必单独订阅 webclient 的 调用
而是让它成为流程的一部分并仅从某个订阅者那里订阅一次?
请注意,这最终必须 return 一个 Observable < Integer >。
Observable<Integer> observable = Observable.just(1)
.delay(5, TimeUnit.MILLISECONDS)
.compose(obs -> {
webClient.putAbs("url")
.rxSend()
.doOnSubscribe(() -> System.out.println("Subbing to client")) // to be removed with solution
.subscribe(); // I don't want to have to do a sub here.
return obs;
})
.doOnSubscribe(() -> System.out.println("the only single sub i want to have"));
一些外部订阅者会执行以下操作。
observable.subscribe()
;
我希望这会触发整体流程,这也会触发网络客户端的调用,而不是像上面那样单独调用它。
这可能吗?
因此寻找类似以下未单独订阅 webClient 的内容。
尝试通过 flatmap 和 compose 但无法实现。
(以下语法错误,只是粗略的展示我要找的东西)
Observable<Integer> observable = Observable.just(1)
.delay(5, TimeUnit.MILLISECONDS)
.compose(obs -> webClient.putAbs(""))
.rxSend()
.toObservable();
感谢任何指导。谢谢
这应该有效:
Observable<Integer> observable = Observable.just(1)
.delay(5, TimeUnit.MILLISECONDS)
.flatMap(obs -> webClient.putAbs("url").rxSend().map(a -> obs));
.flatMap()
急切订阅内webClient
调用
我有以下方法,它按预期工作。
但是有没有办法修改它,这样我就不必单独订阅 webclient 的 调用
而是让它成为流程的一部分并仅从某个订阅者那里订阅一次?
请注意,这最终必须 return 一个 Observable < Integer >。
Observable<Integer> observable = Observable.just(1)
.delay(5, TimeUnit.MILLISECONDS)
.compose(obs -> {
webClient.putAbs("url")
.rxSend()
.doOnSubscribe(() -> System.out.println("Subbing to client")) // to be removed with solution
.subscribe(); // I don't want to have to do a sub here.
return obs;
})
.doOnSubscribe(() -> System.out.println("the only single sub i want to have"));
一些外部订阅者会执行以下操作。
observable.subscribe()
;
我希望这会触发整体流程,这也会触发网络客户端的调用,而不是像上面那样单独调用它。
这可能吗?
因此寻找类似以下未单独订阅 webClient 的内容。
尝试通过 flatmap 和 compose 但无法实现。
(以下语法错误,只是粗略的展示我要找的东西)
Observable<Integer> observable = Observable.just(1)
.delay(5, TimeUnit.MILLISECONDS)
.compose(obs -> webClient.putAbs(""))
.rxSend()
.toObservable();
感谢任何指导。谢谢
这应该有效:
Observable<Integer> observable = Observable.just(1)
.delay(5, TimeUnit.MILLISECONDS)
.flatMap(obs -> webClient.putAbs("url").rxSend().map(a -> obs));
.flatMap()
急切订阅内webClient
调用