setTimeout 模拟 setInterval
一、为什么要用 setTimeout 模拟 setInterval
在 setInterval 回调函数中处理异步任务,会创建一个很长的请求队列,执行效率很低。
存在耗时很长的同步任务,setInterval 的周期性会被打乱,执行回调函数可能会不在预期内。
回调函数抛出错误,还是会继续执行,不会停止
二、setTimeout 去模拟 setInterval 的实现
let timeMap = {}; |
基本思路是递归+setTimeout,这里用 timeMap 去存 time id 是因为定时器可能有很多,每个都是唯一的,使用 map 去存储每一个 time id,方便清除多个定时器。
参考文献:
本文标题:setTimeout 模拟 setInterval
文章作者:Canace
发布时间:2021-06-02
最后更新:2023-05-26
原始链接:https://canace.site/setTimeout%E6%A8%A1%E6%8B%9FsetInterval/
版权声明:转载请注明出处
分享