小编907*_*997的帖子

如何在清单 v3 Chrome 扩展程序中定期调用函数?

服务工作人员替换了清单 v3 chrome 扩展程序中的背景页面,我正在尝试为我的扩展程序使用一个。我需要能够定期运行一个函数,看来警报是可行的方法。在示例中,他们建议在 Service Worker 的顶层执行此操作:

chrome.alarms.create({ delayInMinutes: 3.0 });

chrome.alarms.onAlarm.addListener(() => {
  chrome.action.setIcon({
    path: getRandomIconPath(),
  });
});
Run Code Online (Sandbox Code Playgroud)

但据我了解,我的服务人员是否在事件之间被杀是不确定的。我相信如果浏览器杀死我的服务工作人员,这将每 3 分钟调用一次,因为当重新启动脚本来处理警报时,它将再次运行第一行并排队另一个警报。

相比之下,如果浏览器让我的 Service Worker 在警报之间存活 3 分钟,则不会循环,因为它只会调用addListener()一次,但会调用回调两次(一次是针对最初生成该 Service Worker 的第一个警报,并再次针对在 Service Worker 调用的第一行注册的警报)。然后,Service Worker 最终会死亡,并且任何警报都不会再次唤醒它。

我是否误解了这里的事件如何运作?如果没有,我如何注册一次重复发生的警报chrome.alarms.create({ periodInMinutes: 3.0 });,并避免每次重新启动服务人员时都重新注册它?

注意:delayInMinutes触发一次,periodInMinutes会再次发生。

javascript google-chrome-extension service-worker

5
推荐指数
1
解决办法
3982
查看次数