Play允许临时挂起HTTP请求。挂起的HTTP请求仍然保持连接,但是该请求的执行会被移出线程池并稍后进行尝试。根据需要,Play可以在一段固定的延时后恢复现场,继续执行请求。
public static void generatePDF(Long reportId) {
Promise<InputStream> pdf = new ReportAsPDFJob(report).now();
InputStream pdfStream = await(pdf);
renderBinary(pdfStream);
}
Play还提供了waitAll() ,waitAny(),waitEither()等方法。
public static void usePromise(){
F.Promise<WS.HttpResponse> promise1=WS.url("http://domain1.com").getAsync();
F.Promise<WS.HttpResponse> promise2=WS.url("http://domain2.com").getAsync();
F.Promise<List<WS.HttpResponse>> promises = F.Promise.waitAll(promise1, promise2);
await(promises);
renderText("Execute finished");
}