PeriodicSyncManager - 提供了一种可以注册要在服务工作线程中定期运行任务的方法

PeriodicSyncManagerWeb Periodic Background Synchronization API 的接口,提供了一种可以通过网络连接来注册要在服务工作线程中定期运行任务的方法。这些任务称为定期后台同步请求。通过 ServiceWorkerRegistration.periodicSync 访问 PeriodicSyncManager

属性

无。

方法

PeriodicSyncManager.register

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

PeriodicSyncManager.getTags

返回一个 Promise,该解析为 strings 的列表,这些列表表示当前已注册用于定期同步的标签。

PeriodicSyncManager.unregister

注销对应于指定标签的周期性同步请求,并返回一个 Promise,在注销完成时解析。

实例

以下实例显示如何使用该接口。

请求定期后台同步

以下异步函数从浏览上下文中至少以一天的间隔注册一个定期的后台同步:

async function registerPeriodicNewsCheck() {
  const registration = await navigator.serviceWorker.ready;
  try {
    await registration.periodicSync.register('fetch-news', {
      minInterval: 24 * 60 * 60 * 1000,
    });
  } catch {
    console.log('定期同步无法注册!');
  }
}

通过标签验证后台定期同步

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

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

删除定期后台同步任务

以下代码删除了定期后台同步任务,以停止后台同步文章。

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

规范

规范 状态 备注
Web Periodic Background Synchronization
PeriodicSyncManager 的定义
工作草案 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持8080 不支持 不支持67 不支持
getTags8080 不支持 不支持67 不支持
register8080 不支持 不支持67 不支持
unregister8080 不支持 不支持67 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持8080 未知 不支持 未知57 不支持
getTags8080 未知 不支持 未知57 不支持
register8080 未知 不支持 未知57 不支持
unregister8080 未知 不支持 未知57 不支持

相关链接