Playframework 如何让我的方法等到承诺完成

Playframework 如何让我的方法等到承诺完成,playframework,playframework-2.0,promise,Playframework,Playframework 2.0,Promise,我有一个方法(在play框架中),我将从中调用我将调用一个Web服务,但在play 2.4.0M2版本中,我得到的响应被包装在承诺中 因此,该方法返回来执行正常工作,而不等待Web服务完成。这对以前的流程造成了一些问题。因此,现在我必须让该方法在调用Web服务的同一行上等待,并在Web服务返回一些响应后从下一行继续执行 有办法吗 我的代码: Promise<WSResponse> response = WS.url(SignConstants.SIGN_DOCUMENT_URL).p

我有一个方法(在play框架中),我将从中调用我将调用一个Web服务,但在play 2.4.0M2版本中,我得到的响应被包装在承诺中

因此,该方法返回来执行正常工作,而不等待Web服务完成。这对以前的流程造成了一些问题。因此,现在我必须让该方法在调用Web服务的同一行上等待,并在Web服务返回一些响应后从下一行继续执行

有办法吗

我的代码:

Promise<WSResponse> response = WS.url(SignConstants.SIGN_DOCUMENT_URL).post(new File(inputfilepath));

return response.map(new Function<WSResponse, Boolean>() {
   public Boolean apply(WSResponse response) throws Exception {
      //some code here 
      return Boolean.TRUE;
  }
});
WSResponse response=WS.url(SignConstants.SIGN_DOCUMENT_URL)
.post(new File(inputfilepath)).get(10000);
Promise response=WS.url(SignConstants.SIGN_DOCUMENT_url).post(新文件(inputfilepath));
返回response.map(新函数(){
公共布尔应用(WSResponse响应)引发异常{
//这里有一些代码
返回Boolean.TRUE;
}
});

您从哪里调用此方法?在为请求提供服务的控制器方法中?如果是,您应该返回

Promise<Result> 
承诺

而不是普通的
结果
。请参阅文档中的“异步结果”一节,我自己已经找到了答案

这一切都是关于使用get方法将超时指定为参数

回答:

Promise<WSResponse> response = WS.url(SignConstants.SIGN_DOCUMENT_URL).post(new File(inputfilepath));

return response.map(new Function<WSResponse, Boolean>() {
   public Boolean apply(WSResponse response) throws Exception {
      //some code here 
      return Boolean.TRUE;
  }
});
WSResponse response=WS.url(SignConstants.SIGN_DOCUMENT_URL)
.post(new File(inputfilepath)).get(10000);
其中,我的结果没有用承诺包装,因此我将获得所需的输出


无论如何,谢谢大家。

这段代码看起来很好-等待它的问题代码在哪里?@BenjaminGruenbaum,因为它返回时承诺我的下一行代码将在web服务返回任何内容之前执行。无论如何,我得到了答案,谢谢。这是游戏2.2中的k。我问的是游戏2.4.0M2版本。无论如何,我得到了答案。