Java之路--js中定時任務之輪詢
阿新 • • 發佈:2019-01-28
最近在專案裡做了非常簡單的審批流程,根據領導要求 需要定時檢查 登入使用者是否 有表單需要去審批 ,一開始以為用spring task定時任務排程可能更易於實現,一上手發現,task定時後臺任務,比如清理快取,清理日誌等更為方便好用,而前臺頁面的定時任務,用js的定時器setInterval更加方便,使用起來比較簡單。貼出專案中的程式碼:
/*審批 輪詢*/
var task = setInterval(function(){
$.ajax({
url:"getIsVouchCheckBythisUser",//每60秒執行一次此請求
data:{},
dataType:'json',
success:function(data){
if(data.length > 0){ //如果查詢出資料 給出相應提示
layer.confirm('您有'+data.length+'條表單需要稽核', {offset: 'rb',
btn: ['前往','不再提醒','以後提醒']
},function(){//前往 按鈕
layer.alert('請點選左側 審批單據管理 按鈕進行稽核', {
icon: 7,
skin: 'layer-ext-moon'
})
},function(){//不再提醒 按鈕
clearInterval(task);//關閉輪詢
},function(){ //關閉 按鈕
layer.close(index);//關閉當前提示視窗
});
}
}
})
}, 60000);//60秒 執行一次
邏輯層程式碼在這裡就不貼出來了,看下此段程式碼實現的效果。
顯示條數為動態的,前往 按鈕可以前往 展示所有要稽核的單據的頁面 不再提醒 即執行clearInterval()函式,以後提醒 就是關閉當前彈出視窗。
使用輪詢 setInterval輪詢,直接在js中執行setInterval()函式即可,時間時間可根據自己需求隨意設定,clearInterval()函式為終止輪詢方法,沒有複雜的使用經驗,所以尚不知此方式對系統性能會不會有較大影響,後續將持續學習中....