有个需求需要在18点前 执行个请求看当前人的上班状态,那简单,上代码,使用定时器处理
// 获取当前时间
const now = dayjs();
// 使用dayjs 设置目标时间为当天的18点
const targetTime = dayjs().hour(18).minute(0).second(0).millisecond(0);
// 计算距离目标时间还需要等待的毫秒数
const delayTimestamp = targetTime.diff(now);
exec(delayTimestamp);
const timer = null;
function exec(timestamp) {
console.log("exec");
// 设置定时器,等待指定的毫秒数后执行请求
timer = setTimeout(() => {
// 执行请求任务
ajax();
// 获取明天的现在的时间, 轮询执行明天同时间的任务
const tomorrowNow = dayjs(targetTime).add(1, "day");
// 计算间隔的毫秒数
const oneDayTimestamp = tomorrowNow.diff(targetTime);
exec(oneDayTimestamp);
}, timestamp);
}
// 发送请求,然后做一些处理
function ajax() {
console.log("ajax");
}
// Vue onbeforeMount 清除定时器 clearTimeout(timer)
完整代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>定时请求</title>
<!-- 引入dayjs库 -->
<script src="https://unpkg.com/dayjs@1.11.13/dayjs.min.js"></script>
</head>
<body></body>
<script>
// 获取当前时间
const now = dayjs();
// 使用dayjs 设置目标时间为当天的18点
const targetTime = dayjs().hour(18).minute(0).second(0).millisecond(0);
// 计算距离目标时间还需要等待的毫秒数
const delayTimestamp = targetTime.diff(now);
exec(delayTimestamp);
const timer = null;
function exec(timestamp) {
console.log("exec");
// 设置定时器,等待指定的毫秒数后执行请求
timer = setTimeout(() => {
// 执行请求任务
ajax();
// 获取明天的现在的时间, 轮询执行明天同时间的任务
const tomorrowNow = dayjs(targetTime).add(1, "day");
// 计算间隔的毫秒数
const oneDayTimestamp = tomorrowNow.diff(targetTime);
exec(oneDayTimestamp);
}, timestamp);
}
// 发送请求,然后做一些处理
function ajax() {
console.log("ajax");
}
// Vue onbeforeMount 清除定时器 clearTimeout(timer)
</script>
</html>