• Javascript中的setTimeout和setInterval函数区别


    从几年前(有5年多)一直到现在,在很多讲解Javascript的资料中看过setTimeout和setInterval这两个函数,一直就是以为它们俩的功能是完全一样的--就是多久时间后执行一下了事,所以一直用的就是setTimeout函数,还从来在自己的代码中没用过setInterval函数,其实为什么就不再进一步想想,如果这两个函数功能完全一样,为啥有存在的合理性。
    到现在我才对两个函数的一致性表现出惯于怀疑来,到网上Google一下,才恍然大悟。原来是有区别的,首先从其中的两个单词来理解也可以看出一点名堂来:
    Timeout:<主美>(球类比赛中的)暂时休息,(工作时的)工间休息;计算机里多为"超时",或者"时间到了"的意思
    Interval:间隔, 距离, 幕间休息,时间间隔
    由他们各自代表的 setTimeout 函数表时指定的时间到了,执行某个指定的函数,这时候它的使命即告完成,只执行一次。setInterval 函数则是每隔指定的时间就会执行指定的函数,如果不清除,将执行无数次。setInterval函数的行为更像是很多编程语言中的Timer控件的行为。
    清除计数器的函数分别是 clearTimeout 和 clearInterval, 功能说明如下
    var timer1 = setTimeout("foo",1000);  //设定foo函数将在1000毫秒后执行一次
    .........//do something
    clearTimeout(timer1); //如果程序执行到这里,以setTimeout开始计数时1000毫秒未到,
                                    //clearTimeout后,foo将得不到执行
                                    //如果1000毫秒已过,foo已被触发执行,就没什么意义了
    vartimer2 = setInterval("foo",1000); //设定从现在计时起,每1000毫秒执行1次foo
    .........//do something
    clearInterval(timer2);  //以后foo将不再触发执行了
    所以这样一个细节的被忽略了,也就长久以来用setTimeout+递归来模拟了setInterval的行为,如下代码
    function foo(){
        .......//do something
        setTimeout("foo",1000);
    }
    上面代码是不是看起来与setInterval的表现一样的啊,仅仅是三行倒也好理解,似乎也没复杂多少,但是现成的简单一点的东西为什么不直接拿来用呢?
  • 相关阅读:
    WSL下的Ubuntu 18.04LTS配置软件源和系统更新
    宝塔 5.9.2 最终版 专业版
    宝塔面板7.2.0学习版集合--包含(专业版、企业版及部分插件)
    网络安全学习和CTF必不可少的一些网站
    Hello Blog !
    如何解决机器学习树集成模型的解释性问题
    机器学习建模老司机的几点思考与总结
    2019 秋招提前批蘑菇街一面面经(带答案)
    Java 最全异常讲解
    Spring Context 你真的懂了吗
  • 原文地址:https://www.cnblogs.com/daohuen/p/2662755.html
Copyright © 2020-2023  润新知