在播放中将常见结果作为CompletionStage <Result>返回

Nit*_*mer 5 java asynchronous synchronous playframework

在我的视图函数中,我可以根据发布/获取数据是否有效返回a Result或a CompletionStage<Result>

if (data.hasErrors()) {
    return badRequest(myview.render(data));
} else {
    return CompletableFuture.supplyAsync(() -> calculate(data)
                .thenApply(result -> ok("Got result: " + result.toString()));
}
Run Code Online (Sandbox Code Playgroud)

问题是我无法让view函数返回这两种类型,因此返回异步版本并以某种方式将badRequest(或其他任何常见响应play.mvc.Results)包装在a中似乎合乎逻辑CompletableFuture

我可以做类似的事情:

return CompletableFuture.supplyAsync(() -> "")
            .thenApply(result -> badRequest(myview.render(data)));
Run Code Online (Sandbox Code Playgroud)

但我希望有一个更优雅的解决方案。
有什么事吗

我正在使用播放版本2.5.4。