1. 程式人生 > >Java之路--js中定時任務之輪詢

Java之路--js中定時任務之輪詢

最近在專案裡做了非常簡單的審批流程,根據領導要求 需要定時檢查 登入使用者是否 有表單需要去審批 ,一開始以為用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()函式為終止輪詢方法,沒有複雜的使用經驗,所以尚不知此方式對系統性能會不會有較大影響,後續將持續學習中....