zoukankan      html  css  js  c++  java
  • setTimeout和setInterval

    本来这两个也没什么好说的 用法之类的自行看文档

    这里说说用setTimeout模拟setInterval 

    为什么要模拟呢.用过setInterval的人可能会有这个需求

    • 看原因

    setInterval指定的是,“开始执行”之间的间隔,因此实际上,两次执行之间的间隔会小于setInterval指定的时间。假定setInterval指定,每100毫秒执行一次,每次执行需要5毫秒,那么第一次执行结束后95毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要105毫秒,那么它结束后,下一次执行就会立即开始。

     
    var i = 1;
     
    var timer = setInterval(function() {
     
    alert(i++);
     
    }, 2000);

    上面代码每隔2000毫秒,就跳出一个alert对话框。如果用户一直不点击“确定”,整个浏览器就处于“堵塞”状态,后面的执行就一直无法触发,将会累积起来。举例来说,第一次跳出alert对话框后,用户过了6000毫秒才点击“确定”,那么第二次、第三次、第四次执行将累积起来,它们之间不会再有等待间隔。

    • 为了确保两次执行之间有固定的间隔上面的代码可以改写成如下
    var i = 1;
    var timer = setTimeout(function() {
      alert(i++);
      timer = setTimeout(arguments.callee, 2000);
    }, 2000)

    最后

    • 看用setTimeout模拟setInterval 代码
    function interval(func, wait){
      var interv = function(w){
        return function(){
          setTimeout(interv, w);
          func.call(null);
        }
      }(wait);
     
      setTimeout(interv, wait);
    }
     
    interval(function(){
      console.log(2);
    },1000);
  • 相关阅读:
    Java应用程序的运行机制
    IO流——字符流
    IO流——字节流
    Java API --- File类
    SSM框架整合
    Mybatis核心组件
    AJAX 练习
    设计者模式
    软件七大设计原则
    并发编程
  • 原文地址:https://www.cnblogs.com/moli-/p/11130452.html
Copyright © 2011-2022 走看看