如何让我的方法等到 promise 完成

how to make my method wait untill promise completes

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

所以方法 return 返回正常工作而不等待网络服务 complete.That 对 mu previous flow.So 造成一些问题现在我必须让方法等待我调用 web 服务的同一行,一旦 web 服务 return 有一些响应,就从下一行继续执行。

有什么办法吗

我的代码:

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;
  }
});

你从哪里调用这个方法?在为请求提供服务的控制器方法中?如果是,你应该 return a

Promise<Result> 

而不是普通的 Result。请参阅文档 https://www.playframework.com/documentation/2.2.x/JavaAsync

中的异步结果部分

我自己找到了答案

都是使用get方法指定超时时间为参数

答案:

WSResponse response=WS.url(SignConstants.SIGN_DOCUMENT_URL)
.post(new File(inputfilepath)).get(10000);

其中我的结果没有用承诺包装,所以我会得到我想要的输出。

总之谢谢大家..