Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java同步承诺(使用CompletionStage)_Java_Playframework_Promise - Fatal编程技术网

Java同步承诺(使用CompletionStage)

Java同步承诺(使用CompletionStage),java,playframework,promise,Java,Playframework,Promise,我正在创造一个没有必要的承诺 (使用Java Play WS) public CompletionStage doSomething(){ JsonNode json=request().body().asJson(); /* *不需要承诺。只需返回请求即可。 */ if(json==null){ //我想我在这里杀的太多了 ObjectNode result=Json.newObject(); 结果。放置(“错误”、“某些错误”); 返回CompletableFuture.SupplySync

我正在创造一个没有必要的承诺

(使用Java Play WS)

public CompletionStage doSomething(){
JsonNode json=request().body().asJson();
/*
*不需要承诺。只需返回请求即可。
*/
if(json==null){
//我想我在这里杀的太多了
ObjectNode result=Json.newObject();
结果。放置(“错误”、“某些错误”);
返回CompletableFuture.SupplySync(()->{return 0;})
。然后应用(i->badRequest(结果));
}
/*
*需要承诺。
*/
返回ws.url(“http://www.example.com/")
.get()
。然后应用(响应->{
String body=response.getBody();
//做点什么
返回ok(主体);
});
}
由于代码的第二部分,我需要返回
CompletionStage


对于那个简单的响应,我真的需要所有这些异步代码吗?我的
返回0
对于代码来说是无用的,除了不会引起语法错误。

这比预期的要容易。
返回0
完全没有必要,因为它可以被实际的返回代码替换,也避免了
然后应用
的重复

因此,不需要承诺的部分可以替换为:

    if (json == null) {
        return CompletableFuture.supplyAsync(() -> {
            ObjectNode result = Json.newObject();
            result.put("error", "some error");
            return badRequest(result);
        });
    }
而且,

    if (json == null) {
        return CompletableFuture.supplyAsync(() -> {
            ObjectNode result = Json.newObject();
            result.put("error", "some error");
            return badRequest(result);
        });
    }