Java同步承诺(使用CompletionStage)
我正在创造一个没有必要的承诺 (使用Java Play WS)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
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);
});
}