PeriodicSyncManager

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

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

PeriodicSyncManager 接口是 Web 定期后台同步 API 的一部分,它提供了一种方法来注册在服务工作线程中以定期间隔(并具有网络连接)运行的任务。这些任务称为定期后台同步请求。通过 ServiceWorkerRegistration.periodicSync 访问 PeriodicSyncManager

实例属性

无。

实例方法

PeriodicSyncManager.register() 实验性

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

PeriodicSyncManager.getTags() 实验性

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

PeriodicSyncManager.unregister() 实验性

注销与指定标签对应的定期同步请求,并返回一个 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

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅