js定时器setInterval和setTimeout

来源:互联网 发布:淘宝自动下架的原因 编辑:程序博客网 时间:2024/05/22 15:53

js定时器就2个方法,非常简单,直接看代码:

    window.setInterval(function(){        //handle    },1000); // 这里表示每隔1000毫秒执行一次function(){...}方法    window.setTimeout(function(){        //handle    }, 3000); //这里的3000表示3秒后执行function(){...}方法

确切的说setInterval 才是真正的定时执行函数, setTimeout 则是一个延后执行函数。当然,他们都能实现同样的效果,所以通常都称为“定时器”。

注意:定时器的关键在于何时停止,何时该停止,因为定时器会导致内存泄露(爆表)。


方法太简单,也没什么好说的,来看几个“小栗子”吧。

setInterval

作为延后执行函数使用,案例一

<div>    <button id="start">run</button>    <button id="btn">stop</button></div><script>    var timer = null;    var start = document.querySelector('#start');    var btn = document.querySelector('#btn');    start.addEventListener('click', function () {        run();    });    btn.addEventListener('click', function () {        stop();    });    function run() {        stop(); //养成良好的习惯,不管这里需要不需要清除定时器,都给我写上。        timer = setInterval(function () {            console.log('5秒后打印出来'); //5秒后执行,但只执行一次            stop(); //注意这里多了一个stop()        }, 5000);    }    function stop() {        if (timer) {            clearInterval(timer);        }    }</script>    

作为定时执行函数使用,案例二

<div>    <button id="start">run</button>    <button id="btn">stop</button></div><script>    var timer = null;    var start = document.querySelector('#start');    var btn = document.querySelector('#btn');    start.addEventListener('click', function () {        run();    });    btn.addEventListener('click', function () {        stop();    });    function run() {        stop(); //记住,这个stop()灰常重要,千万别少,你可以试一试!!!        timer = window.setInterval(function () {            var num = getRandomNumber(100, 500);            console.log(num); //这里每300毫秒产生了一个100-500之间的随机数,你可以用它来干你想干的事情……        }, 300);    }    function stop() {        if (timer) {            window.clearInterval(timer);        }    }    function getRandomNumber(min, max) {        return Math.floor(Math.random() * (max - min) + min);    }</script>

setTimeout

作为延后执行函数使用,案例三

<div>    <button id="start">run</button>    <button id="btn">stop</button></div><script>    var timer = null;    var start = document.querySelector('#start');    var btn = document.querySelector('#btn');    start.addEventListener('click', function () {        run();    });    btn.addEventListener('click', function () {        stop();    });    function run() {        stop(); //养成良好的习惯,不管这里需要不需要清除定时器,都给我写上。        timer = setTimeout(function () {            console.log('5秒后打印出来'); //与例一相同,只执行一次        }, 5000);    }    function stop() {        if (timer) {            clearTimeout(timer);        }    }</script>    

作为定时执行函数使用,案例四

<div>    <button id="start">run</button>    <button id="btn">stop</button></div><script>    var timer = null;    var start = document.querySelector('#start');    var btn = document.querySelector('#btn');    start.addEventListener('click', function () {        run();    });    btn.addEventListener('click', function () {        stop();    });    function run() {        stop(); //同样的,这个stop()是保证性能的关键,不能少……        timer = window.setTimeout(function () {            var num = getRandomNumber(100, 500);            console.log(num);//与例二相同,这里每300毫秒产生了一个100-500之间的随机数,你可以用它来干你想干的事情……            run(); //不同的是,这里调用了函数run()        }, 300);    }    function stop() {        if (timer) {            window.clearTimeout(timer);        }    }    function getRandomNumber(min, max) {        return Math.floor(Math.random() * (max - min) + min);    }</script>    

把上面4个例子弄明白了之后,你就可以干活了。至于你要用到什么地方自己看着办。

如果你想把定时器用与轮播图,你可以看看这个例子。点击跳转《封装一个简单的banner轮播插件》

谢谢关注,欢迎点赞:)

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鬼击 男鬼好还是女鬼好 男鬼叫什么 鬼不是鬼 鬼束千宁 魂鬼 7个女仔一只鬼 鬼符身 侍鬼 荆人畏鬼 鬼凤鬼狼 道士抓鬼 鬼梁飞宇 抓鬼道士 鬼舞步 女 鬼狼鬼舞步 鬼舞步面具男教学 鬼舞步 鬼凤 鬼仔 罗刹鬼 鬼罗刹 借尸还魂之男魂女身 康来 我被男神的白月光魂穿了 鸭鸭羽绒服男 网红女神鹿少约隔壁男 网红鹿和眼镜男家教磁力 鹿少网红和男家教 甸园 甸服 甸甸 甸怎么读 远古伊甸 东方伊甸a在线 东方伊甸 广州伊甸论坛020ydy 蔡甸地铁 罗甸千岛湖 甸拼音 甸的拼音 蔡甸论坛 曹妃甸湿地公园