如何让我的方法等到 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);
其中我的结果没有用承诺包装,所以我会得到我想要的输出。
总之谢谢大家..
我有一个方法(在 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);
其中我的结果没有用承诺包装,所以我会得到我想要的输出。
总之谢谢大家..