PeriodicSyncManager - 提供了一种可以注册要在服务工作线程中定期运行任务的方法
PeriodicSyncManager
是 Web 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 的定义 |
工作草案 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 80 | 80 | 不支持 | 不支持 | 67 | 不支持 |
getTags | 80 | 80 | 不支持 | 不支持 | 67 | 不支持 |
register | 80 | 80 | 不支持 | 不支持 | 67 | 不支持 |
unregister | 80 | 80 | 不支持 | 不支持 | 67 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 80 | 80 | 未知 | 不支持 | 未知 | 57 | 不支持 |
getTags | 80 | 80 | 未知 | 不支持 | 未知 | 57 | 不支持 |
register | 80 | 80 | 未知 | 不支持 | 未知 | 57 | 不支持 |
unregister | 80 | 80 | 未知 | 不支持 | 未知 | 57 | 不支持 |