删除多个订阅并将其保留为单个流

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 调用