Java 進度條百分比簡單演算法,根據資料量計算
阿新 • • 發佈:2020-12-29
1. 先把資料計算生成百分比
public JsonResult add(@Validated(ValidateConfig.ADD.class)SecKillDevice secKillDevice, HttpServletRequest request) { //首先迴圈 獲取當前選取的商家list for (int m = 0;m <= merchantList.size()-1; m++){ //計算百分比 商家數 / ((商家總數-1)* 100%) = 進度條的百分比 減一是因為m從0開始計算 Double aDouble = m/((merchantList.size()-1) * 0.01); int intValue=aDouble.intValue(); Integer bfb=Integer.valueOf(intValue); //將進度值儲存到session中 request.getSession().setAttribute("processValue", bfb); } return new JsonResult().success("success"); }
2.從session將執行進度值取出來並返回給使用者
1秒請求一次
public Object getProcess(HttpServletRequest request) { //從session將執行進度值取出來並返回給使用者 Object obj = request.getSession().getAttribute("processValue"); return obj; }
3.前端頁面,為了關閉新增頁面以後繼續可以儲存進度條進度,所以在後面加了判斷,前端為 layui框架
//定義定時器
var timer;
//輪詢請求進度資料 getProcessvalue:function(){ //1秒請求一次進度條的資料 timer = setInterval(function () { $.post('/ad/secKillDevice/getProcess.json',function(data){ $('.layui-progress').show(); //顯示進度條 //更新進度條 element.progress('demo', data+'%'); // 這個是列表頁面的判斷邏輯,因為為了載入頁面的時候,繼續儲存進度條的進度 // 如果進度條百分之百 或者 百分之0 不在呼叫後臺輪詢介面 關閉定時器, 隱藏進度條 if (data == 0 || data == 100){
//清空定時器 clearInterval(timer); $('.layui-progress').hide(); return; } }); }, 1000); },
僅供參考!!