我有一个场景,无法找到合理的答案。所以直接发布问题!
情景 -
我发出ajax请求并发送要上传到服务器的文件。
在服务器(tomcat)上,我下载文件并开始处理。
我在主线程上运行下载文件方法,在新线程上运行 process-file方法,因为处理时间太长,我不希望用户等待长。
我的问题:
Ajax响应将捕获下载文件方法的回调方法中的响应。
我的流程文件方法也会返回状态响应,我需要在处理完成后在前端显示。
但我不能,因为Runnable Interface的run方法返回类型为void。
问题 -
答案 0 :(得分:0)
首先:您可以使用Callable
和ExecutorService
从流程文件方法获取结果。这是一个example。回到前端解释如下。
第二:由于您不想等待用户使用进程文件方法,因此您已经从主线程返回,并且您无法获得第二次返回请求。以下过程使您了解更好,更简单的解决方案。
UUID
)。如果成功下载,请将其传递给流程文件方法并将 ID 从主线程返回到前端。Map<id, result>
,其中 ID 将是关键。/file/status/{id}
)。