前端页面上,我们的需求是比如6点10分更新一次第一个图表,6点20更新一次,6点30更新一次,6点40,6点50。就是每到整分钟就更新一次。然后每天的8点半,更新一第二个图表的数据(也就是重新调用一下接口方法),但是我现在想知道怎么判断整点和8点半这两个时刻啊?
var minTimer = null
var hourTimer = null
// 整分
function timerFunc() {
var date = new Date()
// 取当前分钟个位数,方便计算
var mins = date.getMinutes() % 10
// 触发时间:10 - mins 求出剩余时间
var ticktack = (10 - mins) * 60 * 1000
minTimer = setTimeout(timerFunc, ticktack)
if (mins == 0) {
console.log('整分了')
}
}
timerFunc()
// 8:30
function hourTimerFunc() {
const date = new Date()
const hours = date.getHours()
const mins = date.getMinutes()
const now = date.getTime()
const targetTime = new Date().setHours(8, 30, 0)
// 剩余时间
let remTime = targetTime > now ? (targetTime - now) : (targetTime + 86400000 - now)
hourTimer = setTimeout(hourTimerFunc, remTime)
if (hours === 8 && mins === 30) {
console.log('8:30了')
}
}
hourTimerFunc()
轮询 , setInterval
var timestamp = (new Date()).valueOf()
setInterval(()=>{
timestamp+=1000
},1000)
再把timestamp拆成时分进行判断就可以了
思路:
设置定时器去请求,setInterval
vue中特别提醒;普通html忽略销毁操作
页面切换时候记得将定时器销毁
案例
定时请求
// 定时刷新数据函数
dataRefreh() {
// 计时器正在进行中,退出函数
if (this.intervalId != null) {
return;
}
// 计时器为空,操作
this.intervalId = setInterval(() => {
this.queryAlarm()
}, 15000);
},
// 停止定时器
clear() {
clearInterval(this.intervalId); //清除计时器
this.intervalId = null; //设置为null
},
销毁
destroyed生命周期内销毁
destroyed(){
// 在页面销毁后,清除计时器
this.clear();
}