早上九点和晚上九点各执行一次总共两次,有没有好的写法推荐
cron
定时任务。
自己上 npm 上找几个支持在浏览器里用的 cron 库吧,比如 cron-schedule、timexe、cronosjs 之类的,挑一个比较活跃的、自己喜欢的用。
不过你确定是前端执行吗?
就算是 JS 也得是 Node.js 跑在后端执行定时任务吧?
前端执行的前提得是用户浏览器始终开着你们的网页啊。甚至还必须是当前活动的 Tab、不能是个后台 Tab,因为现代浏览器大多有一套资源分配机制,非活动 Tab 到一段时间后很可能 JS 压根就不执行了。
function runTaskAtNineClock(taskFn) {
var date = new Date();
var hour = date.getHours();
var d = new Date();
d.setMiutes(0)
d.setSeconds(0)
d.setMilliseconds(0)
if(hour < 9) {
d.setHours(9)
setTimeout(taskFn, d-date)
}
if(hour < 21) {
d.setHours(21)
setTimeout(taskFn, d-date)
}
}
13 回答13k 阅读
8 回答2.8k 阅读
2 回答5.2k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
5 回答1.7k 阅读✓ 已解决
1、如果是用node.js写的后端服务,那可以用 node-schedule 的一个库添加定时任务。
2、如果是网页端,那用户行为不可控,不可能一致打开着页面,还可能中途刷新页面,那么要在页面加载的时候计算出目标时间,如现在的时间到目标时间到的毫秒数,然后使用 setTimeOut,时长就是你计算的毫秒数,如果用户一直在页面,那时间到了就会执行,如果用户刷新页面还能重新计算出时长。
以上是我的实现方案。