ExtendableEvent: waitUntil() 方法
注意:此功能仅在Service Workers中可用。
ExtendableEvent.waitUntil()
方法告诉事件调度程序工作正在进行。它还可以用于检测该工作是否成功。在 Service Worker 中,waitUntil()
告诉浏览器工作正在进行,直到 Promise 完成,如果它希望该工作完成,则不应终止 Service Worker。
在Service Worker中的install
事件使用 waitUntil()
将 Service Worker 保持在installing
阶段,直到任务完成。如果传递给 waitUntil()
的 Promise 被拒绝,则安装被视为失败,并且正在安装的 Service Worker 将被丢弃。这主要用于确保在 Service Worker 依赖的所有核心缓存都成功填充之前,不会将其视为已安装。
在Service Worker中的activate
事件使用 waitUntil()
缓冲功能性事件(如 fetch
和 push
),直到传递给 waitUntil()
的 Promise 完成。这使 Service Worker 有时间更新数据库模式并删除过时的caches
,因此其他事件可以依赖于完全升级的状态。
waitUntil()
方法必须最初在事件回调中调用,但之后可以多次调用,直到传递给它的所有 Promise 完成。
语法
js
waitUntil(promise)
参数
一个Promise
。
返回值
无 (undefined
)。
示例
在 Service Worker 的 install
事件中使用 waitUntil()
js
addEventListener("install", (event) => {
const preCache = async () => {
const cache = await caches.open("static-v1");
return cache.addAll(["/", "/about/", "/static/styles.css"]);
};
event.waitUntil(preCache());
});
规范
规范 |
---|
Service Workers # dom-extendableevent-waituntil |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。