欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 设置了超时时间但是不起作用,浏览器里的setTimeout有 bug?

设置了超时时间但是不起作用,浏览器里的setTimeout有 bug?

2024/10/23 11:14:13 来源:https://blog.csdn.net/bravekingzhang/article/details/143081208  浏览:    关键词:设置了超时时间但是不起作用,浏览器里的setTimeout有 bug?

你可能也遇到过这样的问题:写个setTimeout定时器,结果时间一长,浏览器就开始捣乱。比如你想要设置一个几小时甚至几天的延时,突然发现浏览器不听话了!这时候你就会想,难道浏览器的定时器是有上限的?没错,你没看错,setTimeout其实有个最大值限制,时间一超过这个值,就会出问题。别担心,今天咱们就来聊聊怎么解决这个问题,教你一招轻松搞定超长延时。

 

为什么setTimeout会出问题?

先来说说setTimeout的工作原理。你可以理解为它是一个“闹钟”,你告诉浏览器:“喂,过几秒钟叫我一下!”通常你设置的时间可能就是几秒、几十秒。但如果你设置个比如24小时的延时呢?这就是个大问题,因为浏览器的定时器有个时间上限。这个上限到底是多少呢?根据浏览器的不同实现,它通常是在2147483647毫秒,大概是24.8天左右。

听起来时间已经很长了对吧?但如果你是开发一些长期运行的应用,比如倒计时工具,或者是一个需要在后台运行很久的任务,这个上限可能就远远不够了。一旦超过这个值,定时器可能会立刻触发,完全不按预期来。

举个栗子

假设你想设置一个48小时的延时:

setTimeout(() => {
  console.log("两天后提醒!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com