setInterval 和 setTimeout 都是定时器,写法和用法上也很相似,唯一不同的一点就是,setInterval能够根据设置的时间,间隔不断的执行下去,除非取消定时器。setTimeout根据设置的时间,延迟指定的时间,只执行一次

  • setInterval

setInterval(回调函数,间隔时间)

  • setTimeout

setTimeout(回调函数,延迟时间)

通过setTimeout 实现 setInterval,这里用到了递归,核心思想就是不断的调用延时定时器,让他像setInterval一样隔一段时间自动执行一次

let i = 0
function wind() {if (i === 18) {clearTimeout(timer)return}var timer = setTimeout(function() {console.log('延迟2秒');wind()}, 500)i++}wind()

利用递归,首先设置了一个函数 wind, 然后在里面调用自己,实现递归。

当然,递归要写一个结束条件,不然一直调,一直调,就会调死了。就像说故事一样,从前有座山,山里有座庙,庙里有个小和尚在讲故事,讲的是什么故事呢?从前有座山……

这样下去没完没了,就会永无止境,程序就会崩溃,所以一般设一个结束条件,用return结束函数中的递归。

然后将定时器setTimeout放在函数中就可以了,在定时器内部调用函数 wind 自身,实现setTimeout 模拟 setInterval 的功能。

通过setTimeout 实现 setInterval相关推荐

  1. javascript requestAnimationFrame 解决 setTimeout、setInterval 时间不准的方法。

    javascript requestAnimationFrame 解决 setTimeout.setInterval 时间不准的方法. 取代 setInterval <!DOCTYPE html ...

  2. setTimeOut()和setInterval()的用法

    setTimeOut()和setInterval()的用法 setTimeOut(function(){},1000); 在特定时间之后调用函数,只调用一次 setInterval(function( ...

  3. setTimeout和setInterval实现定时器的区别

    这两个方法都能够用来实现在一个固定时间段之后去运行JavaScript.只是两者各有各的应用场景. 方 法 实际上,setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要 ...

  4. js中计时器setTimeout、setInterval、requestAnimationFrame区别

    转载自:https://www.cnblogs.com/xiaohuochai/p/5777186.html 本文仅用于作为学习笔记 计时器一直是javascript动画的核心技术.而编写动画循环的关 ...

  5. setTimeout和setInterval的使用

    (节选自JavaScript精粹) 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTimeout和setInterval的语 ...

  6. JavaScript———从setTimeout与setInterval到AJAX异步

    setTimeout与setInterval执行 首先我们看一下以下代码打印结果 1 2 3 4 5 6 7 console.log(1); setTimeout(function() { conso ...

  7. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...

    javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...

  8. setTimeout和setInterval你真的了解吗?

    setTimeout和setInterval这两个函数, 大家肯定都不陌生, 但可能并不是每个用过这两个方法的同学, 都了解其内部的实质, 甚至可能会错误的把两个实现定时调用的函数理解成了类似thre ...

  9. js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法

    setTimeout()在js类中的使用方法 setTimeout (表达式,延时时间) setTimeout(表达式,交互时间) 延时时间/交互时间是以豪秒为单位的(1000ms=1s) setTi ...

  10. setTimeout 和 setInterval

    由于 JavaScript 是异步的,可以使用 setTimeout 和 setInterval 来计划执行函数. 注意: 定时处理不是ECMAScript 的标准,它们在DOM (文档对象模型) 被 ...

最新文章

  1. 【大学课程】操作系统知识点
  2. 重新复习一下JDK14的9大重磅特性
  3. 深度学习(25)随机梯度下降三: 激活函数的梯度
  4. Dubbo的RPC原理
  5. LeetCode之Reverse String
  6. oracle adg switch over,Oracle11gr2_ADG管理之switchover补充
  7. php5.4.45的php.ini文件
  8. UPS不间断电源的种类有哪些 常见的3类UPS电源
  9. Linux守护进程编程编写,linux守护进程编程实例
  10. php html 停止工作,换行符php和html无法正常工作
  11. Python+Visual Studio
  12. 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)...
  13. 前端try catch是如何捕获异常的_Try-Catch无法正确定位异常位置,我推荐2个有效技巧...
  14. 【飞行器】基于matlab多源信息融合算法多旋翼无人机组合导航系统【含Matlab源码 1267期】
  15. 黑客都怎么制作外挂?C++黑客编程收集的源码集合
  16. windows的终端命令
  17. dtm文件生成等高线 lisp_CAD2000下DTM的建立
  18. LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组
  19. c语言二级培训申请书,学分申请书
  20. java总是permgen out_java.lang.OutOfMemoryError: PermGen space及其解决方法

热门文章

  1. 合并单元格后打字换行_excel中合并了单元格以后往里面打字如果打两行字,怎么换行...
  2. 交通 流量 时间序列预测,神经网络 机器学习 BPNN
  3. sed编辑器之删除行
  4. LeetCode——1849. 将字符串拆分为递减的连续值(Splitting a String Into Descending Consecutive Val..)[中等]——分析及代码(Java)
  5. pytorch【Conv2d参数介绍】
  6. C语言和JAVA的区别在哪里?
  7. ROS学习系列(一):ubuntu16.04下安装 ROS IDE RoboWare Studio 教程
  8. word2013表格文字上下居中
  9. linux--- 连接数据库
  10. 6-11 使用函数输出水仙花数 (20 分)