Java 代码
@GetMapping("/asyncDemo") @ResponseBody public void asyncDemo(Model model, HttpServletRequest request) { AsyncContext asyncContext = request.startAsync(); // 创建一个异步任务来处理请求 new Thread(() -> { try { // 模拟耗时操作 Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } // 异步任务完成后,设置响应内容 try { System.out.println("异步处理完成!"); ServletResponse response = asyncContext.getResponse(); response.setContentType("text/html; charset=UTF-8"); response.getWriter().write("异步处理完成!"); asyncContext.complete(); // 完成异步处理 } catch (IOException e) { e.printStackTrace(); } }).start(); System.out.println("做点别的事情。。。。"); }
前端代码
<!DOCTYPE html> <html> <head> <title>异步请求 示例</title> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> </head> <body> <button id="myButton">点击我</button> <div id="response"></div> <script> $(document).ready(function() { $('#myButton').click(function() { $.ajax({ url: 'http://127.0.0.1:8085/asyncDemo', // 替换为你的API地址 type: 'GET', // 请求类型 dataType: 'text', // 预期服务器返回的数据类型 success: function(data, status, xhr) { // 在这里编写处理函数,例如将返回的数据显示在页面上 $('#response').text(data); }, error: function(xhr, status, error) { // 在这里编写错误处理函数,例如显示错误消息 $('#response').text('Error: ' + error); } }); }); }); </script> </body> </html>
运行结果: