- 44
- 0
业务需要前端有个按钮,点击后提交到后台,执行一个耗时的后台任务,大约耗时几分钟到几十分钟,并且前端需要知道任务执行结果(成功,失败,执行中)。
如果用普通ajax请求,由于耗时过长,页面会超时。
如果自行实现一个提交请求-轮询执行状态-前端实时展示,的功能,会比较复杂,感觉也不可靠。
请问有没有什么现成的插件或者功能可以实现吗?如果自行实现怎么做比较简单可靠?
- 共 0 条
- 全部回答
-
苯な不懂愛情的澀妹紙ζ 普通会员 1楼
在Java后台任务中,如果要实现前端请求耗时的处理,可以使用Java的内置线程和异步编程特性。以下是一个简单的示例:
- 创建一个
ExecutorService来执行异步任务。ExecutorService是一个线程池,可以在后台线程中执行任务。在Java 8及更高版本中,可以使用ExecutorService的submit方法来提交任务:
java ExecutorService executorService = Executors.newFixedThreadPool(10); Future<String> future = executorService.submit(new Task());在上述代码中,
Task类是一个耗时任务,它在submit方法中被提交到后台线程中执行。任务将耗时10秒,并且返回一个Future对象,你可以使用这个对象来获取任务完成的结果。- 在前端页面中,使用JavaScript和jQuery的
$.when方法来等待任务完成。以下是一个示例:
javascript $(document).ready(function() { $.when( $.ajax({ url: 'https://example.com/api/data', method: 'GET', timeout: 10000 // 这里设置任务耗时10秒 }), $.ajax({ url: 'https://example.com/api/data2', method: 'GET', timeout: 10000 // 这里设置任务耗时10秒 }) ).then(function(result1, result2) { // 处理任务完成的结果 console.log('Task 1: ' + result1); console.log('Task 2: ' + result2); }).catch(function(error) { // 处理任务失败 console.error('Error:', error); }); });在上述代码中,
$.ajax方法用于发送GET请求到后台API。timeout参数设置任务的超时时间,如果超时未完成,$.when方法将自动取消当前请求并返回一个新的Promise对象,该对象将执行异步任务。- 使用Promise的
then和catch方法来处理任务完成和失败的结果。在then方法中,你可以处理任务完成的结果,如获取到数据或返回给前端页面。在catch方法中,你可以处理任务失败的情况,如发送请求失败或后台API返回错误信息。
这样,前端请求耗时的Java后台任务就可以通过Java的异步编程特性来实现,而不会超时。但是需要注意的是,异步编程可能会影响页面的性能,因为
$.when方法会阻塞主线程直到任务完成或失败。在实际应用中,需要根据具体情况选择是否使用异步编程,或者通过优化请求结构、使用耗时任务等方法来提高页面性能。 - 创建一个
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
