我只想让服务人员更新判断发生,例如5分钟内的应用程序被使用.

问题是,因为它被包裹在

window.addEventListener('load', async () => {
        navigator.serviceWorker.register("/serviceWorker.js");      
        const registration = await navigator.serviceWorker.getRegistration();

它在加载时开始判断.

为了绕过它,我将服务工作者init放在一个函数中,我可以随时调用该函数,但当然,它失败了,因为...

window.addEventListener('load', async ()

在加载窗口后调用.

推迟服务人员支票的总体 idea 是什么?

推荐答案

您将希望像这样使用setTimeout():

window.addEventListener('load', async () => {
    navigator.serviceWorker.register("/serviceWorker.js");
    setTimeout(async () => {
        const registration = await navigator.serviceWorker.getRegistration();
    }, 300000);
}

setTimeout()的第一个参数是在延迟之后调用的回调,第二个参数是以毫秒为单位的延迟(5分钟=300,000毫秒).

此外,正如Arman Charan所指出的,如果你想立即获得注册,而不是等待,那么只需等待navigator.serviceWorker.register:

window.addEventListener('load', async () => {
    const registration = await navigator.serviceWorker.register("/serviceWorker.js");
}

Javascript相关问答推荐

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

togglePopover()不打开但不关闭原生HTML popover'

网页自检测外部元素无法加载

为什么ngModel不能在最后一个版本的Angular 17上工作?'

为什么这个JS模块在TypeScript中使用默认属性导入?""

如何禁用附加图标点击的v—自动完成事件

从Node JS将对象数组中的数据插入Postgres表

你怎么看啦啦队的回应?

在运行时使用Next JS App Router在服务器组件中运行自定义函数

类构造函数不能在没有用With Router包装的情况下调用

为什么我的getAsFile()方法返回空?

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

顶点图使用组标签更新列之间的条宽

使用props 将VUE 3组件导入JS文件

如何为两条动态路由创建一个页面?

从客户端更新MongoDB数据库

使用导航时,路径的所有子组件都必须是路径

我怎么才能拿到幼风登录?

在脚本设置中使用Vue3 v-html,无需额外的换行标记