精华内容
下载资源
问答
  • setTimeout与setInterval区别 这两个都是原生js的定时方法,但执行次数不同。 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。简单得说就是几秒之后,你把我交给你得任务执行了。(执行一次) ...
    setTimeout与setInterval区别

    这两个都是原生js的定时方法,但执行次数不同。

    • setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。简单得说就是几秒之后,你把我交给你得任务执行了。(执行一次)

      setTimeout(function(){ alert("Hello"); }, 3000);

    • setInterval()可按照指定的周期(以毫秒计)来调用函数或计算表达式,直到clearInterval()方法被调用或窗口被关闭。简单来说就是每几秒执行一次,无限执行。

    <script>
        var w, h;
        var canvas = document.querySelector('canvas');
        ~~function setSize() {
            window.onresize = arguments.callee;
            w = window.innerWidth;
            h = window.innerHeight;
            canvas.width = w;
            canvas.height = h;
        }();
        var canCon = canvas.getContext('2d');
        var x = randomNum(0,w);
        var y = 100;
        setInterval(function(){
            canCon.fillStyle = randomColor();
            canCon.arc(x,y++,20,0,2*Math.PI)
            canCon.fill();
        },1000/60);
    
        // 随机数
        function randomNum(min,max){
            return Math.floor(Math.random() * (max - min) + min);
        }
        // 随机颜色
        function randomColor(){
            var r,g,b,a;
            r = randomNum(0,255);
            g = randomNum(0,255);
            b = randomNum(0,255);
            a = Math.random();
            return `rgba(${r},${g},${b},${a})`;
        }
    </script>
    

    至此一个闪动的滚动条出现。

    但是我发现setInterval越来越快的问题…

    经过仔细排查之后,我排除了我自己代码的问题,于是就开始查各种资料。最后才晓得这是setInterval()自身的问题。下面引用大佬的一段话来解释为什么使用setInterval会出现越来越快的问题。

    “JavaScript是运行在单线程的环境中的,所以这就意味着定时器就成了要执行的计划!而不是必须要执行的铁律! 为啥呢? 当函数开始执行时在栈中创建出来一个栈帧,这个栈帧的执行是需要时间的,假设有3秒,在这三秒内,JavaScript的单线程特点就会确保在这3秒内全力的专一的去解决掉这个栈帧(函数)。所以在这个函数运行的时候定时器是没有能力终止他的运行的,因此当函数的运行时间大于间隔时间时,间隔时间1秒到了,但是程序还有2秒没有执行完,那你也给我老老实实的等着函数执行完!!!”

    知道了问题的原因,那我们再来看一下怎么去解决这个问题。

    使用setTimeout循环来解决setInterval越来越快的问题

    var i=0;
        function show() {
            console.log(i);
            i++;
            if(i<5){
                setTimeout(show,1000);
            }
        }
        show();
    
    展开全文
  • 都是定时方法 ...但是,可以使用setTimeout的嵌套循环来实现 setInterval的功能。 同时,setInterval这个方法,是每隔多少时间间隔去执行一段代码, 比如说:setInterval("aaa()",10000),是每隔10000时...

    都是定时方法

    setTimeout方法是定时程序,也就是在什么时间以后干什么。只执行一次

    setInterval方法则是表示间隔一定时间反复执行某操作

    但是,可以使用setTimeout的嵌套循环来实现 setInterval的功能。

    同时,setInterval这个方法,是每隔多少时间间隔去执行一段代码,

    比如说:setInterval("aaa()",10000),是每隔10000时间间隔执行aaa()方法而不管aaa()方法要花多长时间。

    而使用setTimeout的循环嵌套来实现的setInterval方法,则会多加上函数体执行的时间。。。所以,理论上,setTimeout方法比setInterval方法执行统一个方法的时间间隔要长。

    转载于:https://www.cnblogs.com/yanchanggang/archive/2010/04/08/1707835.html

    展开全文
  • 当调用 windows.setTimeOut(“add()”,3000); 意味着 3秒之后调用add()方法调用 window.setIn terval("add()",3000); 意味着每隔 3秒就调用add()方法 

    当调用

                  windows.setTimeOut(“add()”,3000);

                 意味着 3秒之后调用add()方法

    调用       window.setIn terval("add()",3000);

                 意味着每隔 3秒就调用add()方法

                

    展开全文
  • setTimeout 一般是递归调用,来实现循环。不必维护setTimeout句柄,因为只是调用一次执行一次。setInterval 调一次执行多次,一般要维护setInterval句柄,除非你不想关掉它。所以根据这一点来说,setInterval性能...

    一,这两个东西用得最多的是在动画。setTimeout 一般是递归调用,来实现循环。不必维护setTimeout句柄,因为只是调用一次执行一次。setInterval 调一次执行多次,一般要维护setInterval句柄,除非你不想关掉它。所以根据这一点来说,setInterval性能肯定要高。因为setTimout想要实现循环,必须不停地创建,释放,创建。。。而setInterval不用。



    二,setTimeout被用得更广泛。前面说了,它的效率低,为何还用得比较广泛呢?原因在于,setInterval不安全。setInterval 会每隔设定的时间间隔,向一个队列里面压入我们的逻辑方法。当这个方法执行完了后会自己出队列。要是这个方法执行得很久,且时间间隔又相对较小,那么这个队列就会很长,以至于耗尽内存。这也是各种大牛不愿使用setInterval的原因。



    三,二者的时间间隔调用都是不精确的。都要等实际的代码执行完后才调用。比如setTimout所掉的方法需要执行1000ms,但是setTimeout的时间间隔为10ms,那么它至少也要等1000ms甚至更久才能再次调用。


    展开全文
  • setTimeout 超时调用,超过时间T,就执行fn setInterval 间歇调用,调用周期t,执行fn 相同点 二者调用后均返回数值ID,可以用来取消。 清除setInterval比较重要 setTimeInterval间隔时间不准确原因 1 假如fn执行...
  • 主要给大家介绍了关于setTimeout与setInterval区别的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • JS中的setTimeoutsetInterval区别JS中的setTimeoutsetInterval区别JS中的setTimeoutsetInterval区别
  •  setTimeout与setInterval的主要区别是:  setTimeout()方法只运行一次,也就是说当达到设定的时间后就出发运行指定的代码,运行完后就结束了,如果还想再次执行同样的函数,可以在函数体内再次调用setTimeout(),...
  • setTimeout与setInterval

    2019-10-07 02:01:04
    1、setTimeout与setInterval区别setTimeout()方法用来指定某个函数或字符串在指定的毫秒数之后执行。它返回一个整数,表示定时器的编号,这个值可以传递给clearTimeout()用于取消这个函数的执行。 ...
  • 实际上,setTimeoutsetInterval...不过这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。 setInterval("showTime()
  • setTimeout setInterval

    2019-04-24 18:45:00
    setTimeout setInterval 实现回调本质上区别setTimeout(function(){ /* Some long block of code ... */ setTimout(arguments.callee,10);},10);setInterval(function(){ /* Some long block of code ... */...
  • 实际上,setTimeoutsetInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。不过这两个函数还是有区别
  • setTimeout: 在自定义时间到了之后,运行一次setTimeout 代码 setInterval: 在自定义时间到了之后,循环往复执行setInterval 代码
  • 最近在做一个拍卖的微信小程序,用到了定时器setTimout和setInterval,简单谈谈这两个api。 setTimeout   (此图片来源于网络,如有侵权,请联系删除! ) 最常见的用法就是第二种(第三种mdn文档不推荐),如: var ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,126
精华内容 25,250
关键字:

settimeout与setinterval区别