JavaScript 函数 setTimeout() 和 setInterval() 有时不工作
Posted
技术标签:
【中文标题】JavaScript 函数 setTimeout() 和 setInterval() 有时不工作【英文标题】:JavaScript functions setTimeout() and setInterval() are sometimes not working 【发布时间】:2020-11-22 23:07:44 【问题描述】:我自己的 Google Chrome 扩展程序在一段时间后停止工作,因为 setTimeout() 在某些情况下不起作用。
因此,在一些必要的延迟之后,后台脚本不会向内容脚本发送消息。
我通过编写许多 console.log() 语句发现了这个问题。
作为一种解决方案,我考虑使用 setInterval() 直到将消息发送到内容脚本:
var timer = setInterval(function()
clearInterval(timer);
// Sending a message to the content script
, 3000);
我在 setInterval() 之前、期间和之后的代码都很安静,所以我希望这段代码 sn-p 足够了。
有谁知道这些超时或间隔在哪些情况下不开始?
或者我可以使用任何类似的选项吗?
我曾考虑过使用 Chrome 警报 API,但警报每分钟只能使用一次,如果我没记错的话,最小延迟是一分钟。
【问题讨论】:
setInterval 的用法很奇怪。无论如何,也许“停止工作”与其他代码有关? 如果您使用"persistent":false
声明后台脚本,这是正确且预期的行为:后台脚本将在不活动时卸载而忽略任何计时器。见Persistent background page on demand or an event page that doesn't unload?
【参考方案1】:
我从未遇到过任何 setinterval 或 settimeout 停止工作的问题。我猜你的代码可能有问题。如果您确定该错误,您应该制作一个演示项目并在 github 上报告错误。
【讨论】:
以上是关于JavaScript 函数 setTimeout() 和 setInterval() 有时不工作的主要内容,如果未能解决你的问题,请参考以下文章
setTimeout 函数执行代码没有任何延迟。 Javascript [重复]
在javascript中的另一个setTimeout函数中使用setTimeout
JavaScript 的setTimeout 和Angular中的$timeout的區別