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

瀏覽器相容性

另見