mono::然后返回null

7xllpg7q  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(747)

我对React式编程比较陌生。我的问题是关于 Mono::then 我要做的是,从传入请求中提取主体,将其设置为静态变量。完成后,发送一个响应,说明服务已经启动。但是下面的代码总是返回“service started for:null”。
我想 Mono::then 应该在第一个mono完成后运行(在本例中,在设置静态变量之后),并返回“servicestarted for:a,b,c”。
我的理解错了吗?
(同时,任何代码批评都是值得赞赏的)

public Mono<ServerResponse> getStatus(ServerRequest req) {
        Mono<List<Request>> body = req.bodyToFlux(Request.class).collectList();
        return ServerResponse.ok()
                .body(body.doOnNext(i -> {
                    Service.a = i;
                    logger.info("Service started for : {}", i.toString());
                })

                        .then(Mono.just("Service started for: " + Service.a)), String.class);
    }
t0ybt7op

t0ybt7op1#

不鼓励通过静态变量进行通信(特别是在函数式和React式编程中)。在你的问题中,你没有提供足够的关于 Service 你一开始,有点难推荐。
然而,根据现有信息,我将从以下内容开始:

public Mono<ServerResponse> getStatus(ServerRequest req) {
    return req.bodyToFlux(Request.class)
            .collectList()
            .doOnNext(requestBody -> System.out.println("Do your service start here in the background."))
            .flatMap(requestBody -> ServerResponse.ok().syncBody("Service started for: " + requestBody));
}

相关问题