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

时间:2015-01-02 07:58:07

标签: playframework playframework-2.0 promise

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

因此该方法返回执行它的正常工作而不等待web服务完成。这使得前一个流程出现了一些问题。所以现在我必须让方法在我调用的同一行上等待webservice并在webservice返回一些响应后继续从下一行执行。

有没有办法做到这一点。

我的代码:

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

2 个答案:

答案 0 :(得分:0)

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

Promise<Result> 

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

中的异步结果部分

答案 1 :(得分:0)

我自己找到了答案。

所有关于使用get方法指定超时作为参数。

<强>答案:

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

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

无论如何,谢谢你们每个人......