怎么判断setInterval的运行状态(是否停止)

  • Post author:
  • Post category:其他



接上篇

补充,有了自动滚动,让他点击的时候停止滚动,再点击继续滚动。

怎么实现呢,就想到了setInterval和clearInterval。

添加点击事件:

$(document).ready(function() {
        let stop1 = setInterval(autoScroll1, 100)
            //滚动的
        $('#autoScroll1').click(function() {
            // console.log(stop1)
            if (stop1 != "autoScroll1") {
                clearInterval(stop1)
                stop1 = "autoScroll1";
            } else {
                stop1 = setInterval(autoScroll1, 100)
            }
        })

        function autoScroll1() {
            document.getElementById('autoScroll1').scrollTop += 1;
            // let max = document.getElementById('autoScroll1').scrollHeight - (document.getElementById('autoScroll1').screenTop + document.getElementById('autoScroll1').clientHeight);
            let autoScroll1 = document.getElementById('autoScroll1')
                //判断是否到滚动条底部,误差为1px
            let a = autoScroll1.scrollHeight;
            let b = autoScroll1.scrollTop;
            let c = autoScroll1.clientHeight;
            if (b + c >= a - 1) {
                document.getElementById('autoScroll1').scrollTop = 0
            }
        }

       
    })


总结,这里把setInterval 的返回值stop1重新赋值了,

然后通过自己赋值的这个特殊的值(不会被随机数随机到的值)来判断是否在进行这个setInterval函数。

有兴趣的小伙伴自己可以试一下,在你clearInterval后,log一下这个返回值stop1,是一个随机的数字,


本人猜想是:setInterval是一个宏任务,该随机数可能是任务栈中的队列数。(不一定对)

所以就给定一个自我定义的字符串,用来判断该任务是否被clear。



版权声明:本文为weixin_44360092原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。