setTimeout模拟setInterval
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相关推荐
- JS--利用setTimeout模拟setInterval
setTimeout(fn, time),超时调用,在时间大于等于 time 时调用: setInterval(fn, time),是间歇调用,每隔 time 调用一次.从载入后,每隔指定的时间就执行 ...
- 10.setTimeout和setInterval的区别以及模拟实现:
10.setTimeout和setInterval的区别以及模拟实现: setTimeout:推迟ms后执行一次:(延时器) setInterval:间隔ms就重复执行.(重复定时器) 使用setTi ...
- setTimeout和setInterval
本来这两个也没什么好说的 用法之类的自行看文档 这里说说用setTimeout模拟setInterval 为什么要模拟呢.用过setInterval的人可能会有这个需求 看原因 setInterval ...
- 通过setTimeout 实现 setInterval
setInterval 和 setTimeout 都是定时器,写法和用法上也很相似,唯一不同的一点就是,setInterval能够根据设置的时间,间隔不断的执行下去,除非取消定时器.setTimeou ...
- setTimeout 和 setInterval 的定时时间深入研究
setInterval() - 间隔指定的毫秒数不停地执行指定的代码(一直执行). setTimeout() - 在指定的毫秒数后执行指定代码(只执行一次). 使用setInterVal: funct ...
- java 定时器返回值_javascript 函数返回值(return)、定时器(setTimeout、setInterval)...
一.函数的返回值:return 1.函数名+括号=return后面的值 function fn1(){ return 100; } alert(fn1()); // 100 fn1()=return后 ...
- js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...
javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...
- js基础之setTimeout与setInterval原理分析
setTimeout与setInterval概述 setTimeout与setInterval是JavaScript引擎提供的两个定时器方法,分别用于函数的延时执行和循环调用.前者的主要思想是通过一个 ...
- setTimeout() 和 setInterval 定时器的使用(带例题)
定时器:setTimeout() 和 setInterval(两个函数) setTimeout():在指定的毫秒数后调用函数或计算表达式 setTimeout (func, timeout): set ...
最新文章
- [WPF]学习笔记二---主窗体
- 第十九章:集合视图(二十一)
- manila 文件共享存储服务
- Django REST framework的各种技巧——1.基础讲解
- 安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家...
- PHP5中的魔术方法
- x264_param_t参数注解
- 【渝粤题库】国家开放大学2021春2503学前儿童健康教育题目
- 服务器和linux知识,每天学知识:Windows和Linux服务器差异
- Mathematica图片修复
- 软件设计师历年真题与解析分享(05——17年)
- linux格式化命令,Linux怎么格式化磁盘啊?
- [杀形态验证]3D准确率达98
- 采用高德地图 实现打车功能代码
- 将电脑输入法关闭只留我们经常用的输入法
- Centos7 配置netatalk搭建mac Time Machine
- RPA机器人眼中的税务工作
- IContact接口对应的字段意思
- Ubuntu-如何隐藏文件/文件夹
- 家族谱管理系统(C语言版)