剖析setinterval用法

发布时间:2024年01月16日

1 基本语法

JavaScript:setInterval() 用法详解_js setinterval-CSDN博客

setInterval() 是 JavaScript 中的一个内置函数,它用于在指定的间隔时间内重复执行一段代码,实现周期性操作。该函数的语法如下:

setInterval(function, milliseconds, param1, param2, ...)

2 参数说明

  • function:必需,要重复执行的函数或代码块。
  • milliseconds:必需,重复执行的时间间隔以毫秒为单位)。
  • param1, param2, ...可选,传递给要执行的函数的参数。如果无须传递参数,则省略此参数。(没看懂)
  • 注意的问题:
  • 如果 setInterval() 函数的时间间隔设为较小的值,那么可能会因为浏览器的性能限制而导致定时器不准确。建议将时间间隔设为 100 毫秒或以上,以保证计时器的准确性。

    3 使用示例

    使用匿名函数作为第一个参数,用来输出当前时间,间隔时间是1000毫秒即1秒钟

  • // 每秒钟输出一次当前时间
    setInterval(function() {
      console.log(new Date().toLocaleTimeString());
    }, 1000);
    

    这里function() { console.log(new Date().toLocaleTimeString());代表的是一个函数方法,这个函数方法,是打印当地时间与日期为字符串。1000是设定时间,每1秒显示一次。

  • 4 停止 setInterval() 方法

  • setInterval() 方法会返回一个计时器ID,可以通过该计时器ID来取消计时器的执行,方法如下:

  • intervalId = setInterval(function() {
      console.log(new Date().toLocaleTimeString());
    }, 1000);
    
    clearInterval(intervalId );
    
    示例: 打印5次后,取消计时器的执行。
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            var counter = 0;
            maxNum = 5;
            function myFunc() {
                var date = new Date();
                console.log(date.toLocaleTimeString());
                counter++;
                if (counter == maxNum) {
                    clearInterval(intervalId);
                    console.log('已打印' + maxNum + "次");
                }
            }
    
            var intervalId = setInterval(myFunc, 1000);
        </script>
    </body>
    
    </html>
    

    4.(官方推荐)

    通过?$once?时间侦听器在定义完定时器之后的位置来清除定时器:

    mounted() {
        const timer = setInterval(() =>{                    
        // 某些定时器操作                
        }, 500);            
        // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
        this.$once('hook:beforeDestroy', () => {            
            clearInterval(timer);                                    
        })
    }
    

文章来源:https://blog.csdn.net/weixin_48433993/article/details/135634964
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。