Springboot集合前端實現(xiàn)進度條顯示功能實例
項目為什么使用進度條
前端使用進度條顯示的主要原因是提升用戶體驗。它能讓用戶了解當(dāng)前操作的進度和剩余時間,減少不確定感。
特別是在處理大文件上傳、下載或長時間運行的操作時,進度條可以提供視覺反饋,避免用戶感到操作卡頓或無響應(yīng),從而提升整體使用滿意度。
進度條涉及技術(shù)
- 線程:進度條所對應(yīng)的內(nèi)容一般是新建一個線程進行處理,因為所需要處理的時間相對較長。
- Redis:要實時反饋給前端當(dāng)前任務(wù)的進度,每執(zhí)行一步,及時更新執(zhí)行的進度。
- ProgressBar:前端可以使用對應(yīng)的進度條組件,比如ProgressBar。
代碼實現(xiàn)
使用new Thread新建一個線程對業(yè)務(wù)進行處理,并不斷更新Redis中的值,實時維護進度和總量,確保前端能查到這個比例關(guān)系。
- 調(diào)用業(yè)務(wù)處理接口:該接口中包含較長時間的處理過程
@GetMapping("/startProgress") public R startProgress() { String key = IdUtil.getSnowflakeNextIdStr(); Result result = new Result(); result.setStatus("0"); result.setProceed(0); result.setTotal(100); result.setMsg("文件處理中..."); RedisUtils.setCacheObject("Test:"+key,result, Duration.ofMinutes(2L)); // new Thread(()->{ for (int i = 0; i < 100; i++) { try { Thread.sleep(100); //每做完一個實時更新 Result result1 = RedisUtils.getCacheObject(key); result1.setProceed(result1.getProceed()+1); RedisUtils.setCacheObject(key,result1); } catch (InterruptedException e) { throw new RuntimeException(e); } } Result result1 = RedisUtils.getCacheObject(key); result1.setStatus("1"); result1.setMsg("文件處理完成"); RedisUtils.setCacheObject(key,result1); }).start(); return R.ok("操作成功",key); } @Data class Result{ String status; Integer total; Integer proceed; String msg; }
- 輪詢業(yè)務(wù)處理進度
@GetMapping("/redis/{key}") public R find(@PathVariable String key){ return R.ok(RedisUtils.getCacheObject(key)); }
總結(jié)
到此這篇關(guān)于Springboot集合前端實現(xiàn)進度條顯示功能的文章就介紹到這了,更多相關(guān)Springboot前端實現(xiàn)進度條顯示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java VisualVM監(jiān)控遠程JVM(詳解)
下面小編就為大家?guī)硪黄狫ava VisualVM監(jiān)控遠程JVM(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10Java?Chassis3的多種序列化方式支持技術(shù)解密
這篇文章主要為大家介紹了Java?Chassis?3多種序列化方式支持技術(shù)解密,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01SpringCloud基于SpringAMQP實現(xiàn)消息隊列及原理解析
Spring AMQP作為Spring框架的一部分,是一套用于支持高級消息隊列協(xié)議(AMQP)的工具,這篇文章主要介紹了SpringCloud基于SpringAMQP實現(xiàn)消息隊列及原理解析,需要的朋友可以參考下2024-04-04Java8深入學(xué)習(xí)系列(三)你可能忽略了的新特性
一提到Java 8就只能聽到lambda,但這不過是其中的一個而已,Java 8還有許多新的特性,有一些功能強大的新類或者新的用法,還有一些功能則是早就應(yīng)該加到Java里了,所以下面這篇文章主要給大家介紹了關(guān)于Java8中大家可能忽略了的一些新特性,需要的朋友可以參考下。2017-08-08