每天9点到11点开启定时器

文章描述了一个使用Vue.js编写的组件,它通过定时器在特定时间范围(9:00-11:00)触发`triggerMethod`方法。组件在挂载时初始化定时器,如果当前时间不在范围内,则延迟到明天开始执行。
摘要由CSDN通过智能技术生成
data(){
return{
            timer: null, // 存储定时器的ID  
            startTime: null, // 开始时间(毫秒)  
            endTime: null, // 结束时间(毫秒)  
            tomTime: null, // 明天开始时间(毫秒)  
            interval: 1000, // 每隔5分钟(毫秒)  
}
},

mounted(){
this.startTimer()
}, 
methods: {
        triggerMethod() {
            console.log('Method triggered at', new Date().toLocaleTimeString());
            // 在这里执行你的代码  
        },
        // 启动定时器  方法
        startTimer() {
            const that = this
            const now = new Date();
            const startHour = 9;
            const startMinute =0;
            const endHour = 11;
            const endMinute = 0;

            // 计算开始时间和结束时间(毫秒)  
            this.startTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), startHour, startMinute).getTime();
            this.tomTime = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, startHour, startMinute).getTime();
            this.endTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), endHour, endMinute).getTime();

            // 如果当前时间晚于开始时间,则立即启动定时器;否则等待到开始时间  
            if (this.startTime <= now.getTime() && now.getTime() <= this.endTime) {
                this.runTimer();
            } else {
                setTimeout(() => {
                    that.runTimer();
                }, this.tomTime - now.getTime());
            }
        },
        // 运行定时器  方法
        runTimer() {
            if (this.timer) {
                clearInterval(this.timer);
            }
            this.timer = setInterval(() => {
                if (this.startTime <= new Date().getTime() && new Date().getTime() <= 
                this.endTime) {
                    this.triggerMethod()
                }
                else {
                    this.timer = null;
                }
            }, 1000)

           
        },}

 beforeDestroy() {
        // 在组件销毁前清除定时器  
        if (this.timer) {
            clearInterval(this.timer);
            this.timer = null;
        }
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值