回武汉隔离的第二天打卡,武汉加油,逆战必胜!今天想和大家简单聊一下js定时器的问题。

1.setTimeout 延时器 在指定时间后执行一次,注意只会执行一次

    当然有的时候我们想用延时器做出定时器的效果,让它一直执行也可以,就是反复调用函数自身即可,代码如下: 

      fun();    

      function fun() {
        console.log(1)
        setTimeout("fun()",1000); //自身调用,重复执行
      }

  2.setInterval 定时器 在指定的时间间隔内重复的执行,如不清除,会一直执行下去

      setInterval(function () {

        console.log(1);

      },1000)

  3.值得注意的是在setTimeroutsetInterval的使用中,如果传入参数,那只能传入函数名:

      setInterval(fn,1000)

  4.下面问题来了,当我们在执行定时器的过程当中,会发现一件有趣的事情,那就是定时器会累加,看下面的例子: 

    当我们多次点击浏览器窗口时会发现,打印的速度越来越快,这就是我们所说的定时器累加。    

      var timer;
      document.onclick = function() {
        timer = setInterval(function(){
          console.log(1)
        },1000)
      }

    那么为什么会出现这样的情况呢?咱们举个例子,这就好像一个人每隔一秒钟使用一次打印机,点两下的话就相当于两个人去使用这个打印机,他们是同时进行的,因此每一秒打印会有多于原来两倍的速度。那么如何解决这个问题呢?

    定时器累加问题的解决:先清除定时器,再使用定时器。代码示例如下:

      var timer;
      document.onclick = function() {
        clearInterval(timer)
        timer = setInterval(function(){
          console.log(1)
        },1000)
      }

    

最新文章

  1. C# 3种方法连接MySql
  2. JS仿淘宝星星评价
  3. .proto 文件转js 文件方法【nodejs】
  4. sdut 2603:Rescue The Princess(第四届山东省省赛原题,计算几何,向量旋转 + 向量交点)
  5. Python【基础第四篇】
  6. MacOSX快捷键
  7. LoadRunner 学习笔记(2)VuGen运行时设置Run-Time Setting
  8. 洛谷-火柴棒等式-NOIP2008提高组复赛
  9. Python作用域
  10. easyui 异步json tree跨域访问问题解决
  11. [2017.02.21] 《Haskell趣学指南 —— Learning You a Haskell for Great Good!》
  12. JavaWeb之JDBC
  13. Java序列化机制原理
  14. 洛谷P1433 吃奶酪【dfs】【剪枝】
  15. 001_docker-compose构建elk环境
  16. mac 10.12显示隐藏文件
  17. Myeclipse2016安装Aptana
  18. [ 原创 ]Centos 7.0下安装 Tomcat8.5.15
  19. RabbitMQ 安装使用教程
  20. Nginx通过CORS实现跨域

热门文章

  1. 峰哥说技术:03-Spring Boot常用注解解读
  2. 快速上手 Python 命令行模块 Click
  3. 深入理解Java之线程池(网络笔记)
  4. C++ 阶乘求和
  5. node 微信支付
  6. activiti工作流解决历史批注中文乱码
  7. 聊聊count(*)
  8. linux无文件执行— fexecve 揭秘
  9. 网络安全从入门到精通(第一章-1)Web服务器通信原理
  10. CKafka如何助力腾讯课堂实现百万消息稳定互动?