ServiceWorkerContainer: ready 屬性

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有瀏覽器中可用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

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

ServiceWorkerContainer 介面中的只讀屬性 ready 提供了一種延遲程式碼執行直到 service worker 啟用的方法。

該屬性返回一個永遠不會拒絕的 Promise,它會無限期地等待,直到當前頁面關聯的 ServiceWorkerRegistration 擁有一個 active(活動)的 worker。一旦滿足該條件,它將使用 ServiceWorkerRegistration 解析。

一個永遠不會拒絕的 Promise,當存在活動的 service worker 時,它最終可能會使用 ServiceWorkerRegistration 進行解析。

示例

延遲程式碼直到存在活動的 service worker

js
if ("serviceWorker" in navigator) {
  navigator.serviceWorker.ready.then((registration) => {
    console.log(`A service worker is active: ${registration.active}`);

    // At this point, you can call methods that require an active
    // service worker, like registration.pushManager.subscribe()
  });
} else {
  console.error("Service workers are not supported.");
}

規範

規範
Service Workers
# navigator-service-worker-ready

瀏覽器相容性