Grails异步响应呈现是如何工作的?

Grails异步响应呈现是如何工作的?,grails,asynchronous,promise,Grails,Asynchronous,Promise,我在grails控制器中有一个代码片段,如下所示: Future<Map<String,Object>> future1 = service.getMetrics(args1) Future<Map<String,Object>> future2 = service.getMetrics(args2) Map<String,Object> result1 = future1.get(10, TimeUnit.DAYS.MINUTES)

我在grails控制器中有一个代码片段,如下所示:

Future<Map<String,Object>> future1 = service.getMetrics(args1)
Future<Map<String,Object>> future2 = service.getMetrics(args2)

Map<String,Object> result1 = future1.get(10, TimeUnit.DAYS.MINUTES)
Map<String,Object> result2 = future2.get(10, TimeUnit.DAYS.MINUTES)

render([
    data1: result1,
    data2: result2
] as JSON)

这是可行的,但我想了解任务是如何工作的,它是如何确保当前线程在将来不会被阻塞的。get以及它如何为正确的会话提供响应

我相信Graeme在回答我的问题时比当前的文档更进一步地阐明了这一点。Graeme链接到一个类,该类准确地显示了结果转换器在返回承诺或承诺映射时如何检测和处理响应。

我相信Graeme在回答我的问题时比当前的文档更进一步地阐明了这一点。Graeme链接到该类,该类准确显示结果转换器在返回承诺或承诺图时如何检测和处理响应。

请在此答案中包含相关信息。嗨,Alexei,你说得对,我会的。实际上,我仍然处于故障处理中,在调用Asic处理的控制器操作时,存储在会话中的属性消失的异步处理中的GRMMLIN。我想至少链接一篇文章,进一步阐明(除了文档)。请在回答中包括相关信息。嗨,阿列克谢,你说得对,我会的。实际上,我仍然处于故障处理中,在调用Asic处理的控制器操作时,存储在会话中的属性消失的异步处理中的GRMMLIN。我想至少链接一篇文章,进一步阐明(除了文档)。
task {
    Future<Map<String,Object>> future1 = service.getMetrics(args1)
    Future<Map<String,Object>> future2 = service.getMetrics(args2)

    Map<String,Object> result1 = future1.get(10, TimeUnit.DAYS.MINUTES)
    Map<String,Object> result2 = future2.get(10, TimeUnit.DAYS.MINUTES)

    render([
     data1: result1,
     data2: result2
    ] as JSON)    
}