如何通过完成磁通量创建单声道

问题描述 投票:1回答:1

我有一个从Flux源填充Map的类。我希望能够即时运行updateTheData(),但我希望getTheData()能够返回解析为当前或待处理数据的Mono。

基本上,如果theData!= null并且没有进行中的通量,则返回Mono.just(theData)否则,返回单声道,该单声道最终将发出theData。

编辑:这是迄今为止我能做的最好的事情>>

    class SomeClass {
        private Mono<Map<String, Data>> theData;
        private final SomeFluxService someFluxService = new SomeFluxService();

        public SomeClass() {
            updateTheData();
        }

        public void updateTheData() {
            someFluxService.get()
                .collectMap(Data::getId, Function.identity())
                .subscribe(d -> this.theData = Mono.just(d));
        }

        public Mono<Map<String, Data>> getTheData() {
            return this.theData;
        }
    }

但是仍然存在updateTheData()第一次完成之前的问题,getTheData()将返回null

感谢帮助!

我有一个从Flux源填充Map的类。我希望能够即时更新TheData(),但我希望getTheData()能够返回解析为当前或待处理数据的Mono。 ...

java spring-webflux project-reactor reactor
1个回答
0
投票

但是仍然存在updateTheData()第一次完成之前的问题,getTheData()将返回null

© www.soinside.com 2019 - 2024. All rights reserved.