使用setTimeout模拟setInterval
源码
来自半年后的说明:我把代码转放到 gists 里了,当时代码风格受 Python 影响较大,这里就不再更改了,毕竟大家本地都有自己的格式化工具。
前往Github获取本文源码。
介绍
相信setInterval
这个东西大火都比较熟了,这里不做关于它的介绍,而是关于本文是如何实现这一功能。
我们通过一个Set
来保存定时器的id
,当清除时,就把这个id
删掉;当每一次调用时,都会检查一下当前id
是否存储于这个Set
中。
实现
如下:
1 | const interval = { |
我们用_active
这个属性来保存上文提到过的id
,其它的就没什么要说的了。
测试
用下面的代码测试它的正确性:
1 | let count = 0 |
一般定时器都是自己把自己clear
掉,这里也不例外,这种需求应该还挺多的。
这篇文章写着玩的,实际用途没啥用,只是说明了setInterval
可以基于setTimeout
来实现。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 喵喵小窝!