PeriodicSyncManager

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

注意:此功能在 Web Workers 中可用。

PeriodicSyncManager 接口(属于 Web 周期性后台同步 API)提供了一种方法,用于在 Service Worker 中,在网络连接可用时,以固定的时间间隔注册要运行的任务。这些任务被称为周期性后台同步请求。可以通过 ServiceWorkerRegistration.periodicSync 访问 PeriodicSyncManager

实例属性

无。

实例方法

PeriodicSyncManager.register() Experimental

使用指定的标签和选项向浏览器注册一个周期性同步请求。返回一个 Promise,该 Promise 在注册完成后解析。

PeriodicSyncManager.getTags() Experimental

返回一个 Promise,该 Promise 解析为一个 字符串 列表,表示当前已注册用于周期性同步的标签。

PeriodicSyncManager.unregister() Experimental

取消注册与指定标签对应的周期性同步请求,并返回一个 Promise,该 Promise 在注销完成后解析。

示例

以下示例展示了如何使用该接口。

请求周期性后台同步

以下异步函数将在浏览上下文中,以一天为最短间隔,注册一次周期性后台同步。

js
async function registerPeriodicNewsCheck() {
  const registration = await navigator.serviceWorker.ready;
  try {
    await registration.periodicSync.register("get-latest-news", {
      minInterval: 24 * 60 * 60 * 1000,
    });
  } catch {
    console.log("Periodic Sync could not be registered!");
  }
}

通过标签验证后台周期性同步

此代码检查是否已注册具有给定标签的周期性后台同步任务。

js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.getTags().then((tags) => {
    if (tags.includes("get-latest-news")) skipDownloadingLatestNewsOnPageLoad();
  });
});

移除后台周期性同步任务

以下代码会移除一个周期性后台同步任务,以停止在后台同步文章。

js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.unregister("get-latest-news");
});

规范

规范
Web 周期性后台同步
# periodicsyncmanager-interface

浏览器兼容性

另见