问题描述

在一些需求开发中、需要设定软件提供服务的时间段(营业时间)。这时可以选择定时器来实现、可以选择让定时器每隔一段时间检测当前时间是否在服务时间。到达服务时间、进入服务状态。未到服务时间、进入非服务时间段。可能会遇到的问题? 当进行不同服务的切换、退出等操作 需要多次经过定时器的方法时、造成的后果就是定时器开启多次。导致页面功能混乱。怎样解决这一个问题呢? 方法很简单、就是在开启定时器之前、先将上一个开启的定时器关闭(直接在开启定时器的代码之前、编写清除上一次设置的定时器)。这样、无论多少次经过开启定时器的方法、都始终能保持只有一个定时器在工作

解决方案

结论:使用全局变量, 不使用data中定义

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>定时器</title>
    <!-- 引入vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <div id="App">
        <h1>当前num:{{num}}</h1>
        <button @click="startTimer()">点我开启定时器</button>
        <button @click="StopTimer()">点我关闭定时器</button>

    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false  //设置为 false 以阻止 vue 在启动时生成生产提示
        let timerd = null

        //创建Vue实例
        new Vue({
            el: '#App',
            data: {
                value: "Vue",
                newTime: '',
                num: 1,
                // timerd: ''

            },
            methods: {

                StopTimer() {
                    console.log("当前关闭的定时器的值:" + timerd)
                    clearInterval(timerd)
                },
                startTimer() {                
                    console.error("开启了定时器")
                    timerd = setInterval(() => {
                        this.num++
                    }, 1000)

                    console.log("当前定时器的值:" + timerd)
                }
            },
        })
    </script>

</body>

</html>
点赞(1)

评论列表 共有 0 评论

暂无评论