【发布时间】:2021-05-29 03:23:20
【问题描述】:
Service workers replace background pages in manifest v3 chrome extensions,我正在尝试将一个用于我的扩展。我需要能够定期运行一个函数,并且it looks like alarms are the way to go。在示例中,他们建议在服务人员的顶层执行此操作:
chrome.alarms.create({ delayInMinutes: 3.0 });
chrome.alarms.onAlarm.addListener(() => {
chrome.action.setIcon({
path: getRandomIconPath(),
});
});
但据我了解,我的服务人员是否在事件之间被杀死是不确定的。我相信如果浏览器杀死我的服务工作者,这将每 3 分钟调用一次,因为当脚本重新启动以处理警报时,它将再次运行第一行并排队另一个警报。
相比之下,如果浏览器让我的服务人员在警报之间存活 3 分钟,这不会循环,因为它只会调用一次 addListener(),但会调用两次回调(一次用于第一个警报最初产生了这个服务工作人员,并再次为在服务工作人员调用的第一行注册的警报)。 Service Worker 最终将死去,再也没有警报将其唤醒。
我是否误解了事件在这里的运作方式?如果没有,我如何注册一次再次发生的警报chrome.alarms.create({ periodInMinutes: 3.0 }); 并避免每次重新启动我的 service worker 时都重新注册?
注意:delayInMinutes 触发一次,periodInMinutes 重新出现。
【问题讨论】:
标签: javascript google-chrome-extension service-worker