rug*_*ugk 0 javascript add-on firefox-addon google-chrome-extension firefox-addon-webextensions
我正在为浏览器创建WebExtension。因此,我了解了browser.alarms API。它基本上允许您设置(重复发生或一次性)警报,并且将触发回调。
现在,我们已经在JavaScript setTimeout
和and中拥有了很长一段时间的功能setInterval
。那么与这些有什么不同?为什么或在什么情况下我会更喜欢一个?
我的意思是主要区别很明显:您只能在数分钟内(而不是数秒)重新启动它。虽然,我认为when
您也可以以毫秒为单位取消注册和重新注册,但是我认为API的使用期限可能更长,例如几分钟。(我只是在这里猜测。)那么为什么我应该使用它而不是简单的setInterval
/ setTimeout
回调?
setTimeout / setInterval时间跨度受2 ^ 31-1 = 2147483647的限制,即约24天。小于0或大于0的值将被强制转换为int32范围,这可能会产生意外的结果。
setTimeout / setInterval是标准DOM的一部分,而不是孤立的世界,因此,当您在内容脚本中使用它时,网页脚本可能会通过clearTimeout / clearInterval意外清除它们。
解决方法:将消息发布到后台脚本,以便它设置计时器并在完成后发送响应。
事件页面(那些包含"persistent": false
在manifest.json中的页面)由于不活动而不会在卸载前等待setTimeout / setInterval,并且不会唤醒此类计时器,因此您只能在很短的时间内使用它们(当前事件页面保证可以存活5秒钟)。
在这些指定的限制内,您可以安全地使用setTimeout / setInterval。
归档时间: |
|
查看次数: |
230 次 |
最近记录: |