最近在项目里做了非常简单的审批流程,根据领导要求 需要定时检查 登录用户是否 有表单需要去审批 ,一开始以为用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()函数为终止轮询方法,没有复杂的使用经验,所以尚不知此方式对系统性能会不会有较大影响,后续将持续学习中....