setInterval存在的问题

  首先明确,无论setTimeout还是setInterval,都是在指定时间,将回调函数推入任务队列,无法保证实际执行时间。
  区别在于,setTimeout直接推入,setInterval会检查任务队列中是否存在相同的回调函数(未执行),若有则跳过本次推入。

  上图中,setInterval的时间间隔是200ms,但回调函数执行需要较长时间,605ms推入时,发现405ms的回调函数仍未执行,因此跳过本次推入。
  由此会引发多个回调函数执行的时间间隔,小于设定的参数值,甚至参数值被忽略而连续执行。

setTimeout模拟setInterval

const mySetInterval = (callback, delay) => {const rec = (callback, delay) => {setTimeout(() => {callback() // 执行callbackrec(callback, delay) // 递归}, delay)}rec(callback, delay)
}

setTimeout模拟setInterval相关推荐

  1. JS--利用setTimeout模拟setInterval

    setTimeout(fn, time),超时调用,在时间大于等于 time 时调用: setInterval(fn, time),是间歇调用,每隔 time 调用一次.从载入后,每隔指定的时间就执行 ...

  2. 10.setTimeout和setInterval的区别以及模拟实现:

    10.setTimeout和setInterval的区别以及模拟实现: setTimeout:推迟ms后执行一次:(延时器) setInterval:间隔ms就重复执行.(重复定时器) 使用setTi ...

  3. setTimeout和setInterval

    本来这两个也没什么好说的 用法之类的自行看文档 这里说说用setTimeout模拟setInterval 为什么要模拟呢.用过setInterval的人可能会有这个需求 看原因 setInterval ...

  4. 通过setTimeout 实现 setInterval

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

  5. setTimeout 和 setInterval 的定时时间深入研究

    setInterval() - 间隔指定的毫秒数不停地执行指定的代码(一直执行). setTimeout() - 在指定的毫秒数后执行指定代码(只执行一次). 使用setInterVal: funct ...

  6. java 定时器返回值_javascript 函数返回值(return)、定时器(setTimeout、setInterval)...

    一.函数的返回值:return 1.函数名+括号=return后面的值 function fn1(){ return 100; } alert(fn1()); // 100 fn1()=return后 ...

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

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

  8. js基础之setTimeout与setInterval原理分析

    setTimeout与setInterval概述 setTimeout与setInterval是JavaScript引擎提供的两个定时器方法,分别用于函数的延时执行和循环调用.前者的主要思想是通过一个 ...

  9. setTimeout() 和 setInterval 定时器的使用(带例题)

    定时器:setTimeout() 和 setInterval(两个函数) setTimeout():在指定的毫秒数后调用函数或计算表达式 setTimeout (func, timeout): set ...

最新文章

  1. [WPF]学习笔记二---主窗体
  2. 第十九章:集合视图(二十一)
  3. manila 文件共享存储服务
  4. Django REST framework的各种技巧——1.基础讲解
  5. 安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家...
  6. PHP5中的魔术方法
  7. x264_param_t参数注解
  8. 【渝粤题库】国家开放大学2021春2503学前儿童健康教育题目
  9. 服务器和linux知识,每天学知识:Windows和Linux服务器差异
  10. Mathematica图片修复
  11. 软件设计师历年真题与解析分享(05——17年)
  12. linux格式化命令,Linux怎么格式化磁盘啊?
  13. [杀形态验证]3D准确率达98
  14. 采用高德地图 实现打车功能代码
  15. 将电脑输入法关闭只留我们经常用的输入法
  16. Centos7 配置netatalk搭建mac Time Machine
  17. RPA机器人眼中的税务工作
  18. IContact接口对应的字段意思
  19. Ubuntu-如何隐藏文件/文件夹
  20. 家族谱管理系统(C语言版)

热门文章

  1. 低成本高安全的华为数据库
  2. SQL Server 不存在或拒绝访问 (SQL Server 2005)
  3. std::array
  4. 李笑来:7个习惯免费学好英语
  5. Python遥感图像处理基础篇(二):arcpy遥感图像裁剪批量处理
  6. 电力平台双机热备方案
  7. 服务器软件是否支持双机热备,服务器双机热备方案
  8. 关于Firefox+FoxyProxy自动识别代理的设置
  9. 三态门有一个信号控制端en_三态输出电路
  10. CC2540的HAL层UART学习笔记