asynchronous - 是否有 Service Worker 启动 waitUntil 来延迟处理获取?

标签 asynchronous indexeddb service-worker progressive-web-apps

是否可以让 Service Worker 等待开始处理 fetch 事件,直到 Service Worker 启动时异步工作完成?

我有一个应用程序外壳,其路由在数据中定义。要在 service worker 启动时安装特定的路由获取处理程序,我需要从 IndexedDB(异步)查找路由数据。

不幸的是,Service Worker 在 IndexedDB 查找完成并设置路由的提取处理之前就开始接受提取事件。

目前,我只是为此硬编码一个特殊情况的默认处理程序,但最好让 service worker 延迟处理 fetch 事件,直到在 service worker 启动时完成 IndexedDB 处理。

我没有看到“waitUntil”的方法,也许我错过了?

最佳答案

一个代码片段会有所帮助,因为我对这个问题不是 100% 清楚......但是做一些猜测:

在您解决提供给 event.waitUntil 的 promise 之前,当您监听安装事件时,SW 不应拦截任何网络请求,因此在那里进行 IDB 设置应该没问题。

一般来说,让 fetch 事件监听器运行而不做任何事情也很好,因为在这种情况下浏览器将正常回退到网络。

总的来说,还值得牢记的是,SW 可以而且确实经常被杀死,因此局部变量不会在接收不同事件之间停留。如果在处理不同的事件时需要一些数据,则应将其保存在 IDB 或 Cache API 中并再次从那里获取。

关于asynchronous - 是否有 Service Worker 启动 waitUntil 来延迟处理获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009861/

相关文章:

javascript - IndexedDB I/O 速度

node.js - 在 Node.js 中使用 Dexie.js

service-worker - 将 sw-toolbox 与 gulp 一起使用

javascript - 处理用于加载 .gif 图像的异步函数的正确方法是什么?

javascript - 如何使用异步调用解决 IndexedDb Transaction

javascript - 当应用程序已加载时,PWA 更新 Service Worker

javascript - 在位于 SRC 文件夹的 index.html 文件中注册一个 service-worker - ReactJS

python - Tornado :来自迭代器的 AsyncHttpClient.fetch?

android - 飞镖 : How to return Future<void>

python - 专有协议(protocol)(Python、select、epoll)的长生命周期多线程客户端