BackgroundFetchRegistration

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

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

BackgroundFetchRegistration 介面是 Background Fetch API 的一部分,用於表示單個後臺獲取操作。

BackgroundFetchRegistration 例項由 BackgroundFetchManager.fetch()BackgroundFetchManager.get() 方法返回,因此沒有建構函式。

EventTarget BackgroundFetchRegistration

例項屬性

它還繼承了其父級 EventTarget 的屬性。

BackgroundFetchRegistration.id 只讀 實驗性

包含後臺獲取操作 ID 的字串。

BackgroundFetchRegistration.uploadTotal 只讀 實驗性

包含要上傳的總位元組數的 number

BackgroundFetchRegistration.uploaded 只讀 實驗性

包含已成功傳送的位元組大小的 number,初始值為 0

BackgroundFetchRegistration.downloadTotal 只讀 實驗性

包含此下載總位元組大小的 number。這是註冊後臺獲取操作時設定的值,或 0

BackgroundFetchRegistration.downloaded 只讀 實驗性

包含已下載的位元組大小的 number,初始值為 0

BackgroundFetchRegistration.result 只讀 實驗性

最初返回一個空字串,完成時返回 "success""failure" 字串。

BackgroundFetchRegistration.failureReason 只讀 實驗性

一個字串,其值指示後臺獲取操作失敗的原因。可以是以下值之一:"""aborted""bad-status""fetch-error""quota-exceeded""download-total-exceeded"

BackgroundFetchRegistration.recordsAvailable 只讀 實驗性

一個 boolean,指示 recordsAvailable 標誌是否已設定。

例項方法

它還繼承了其父級 EventTarget 的方法。

BackgroundFetchRegistration.abort() 實驗性

中止後臺獲取操作。返回一個 Promise,如果獲取操作成功中止,則解析為 true

BackgroundFetchRegistration.match() 實驗性

返回一個 BackgroundFetchRecord 物件,該物件是引數的第一個匹配項。

BackgroundFetchRegistration.matchAll() 實驗性

返回一個 Promise,該 Promise 解析為一個 BackgroundFetchRecord 物件陣列,其中包含請求和響應。

事件

它還繼承了其父級 EventTarget 的事件。

使用 addEventListener() 監聽這些事件,或透過將事件監聽器分配給此介面的 oneventname 屬性。

progress 實驗性

當以下任何屬性發生更改時觸發:uploadeddownloadedresultfailureReason

示例

以下程式碼建立了一個名為 bgFetchBackgroundFetchRegistration,其 id"my-fetch"

js
navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.fetch(
    "my-fetch",
    ["/ep-5.mp3", "ep-5-artwork.jpg"],
    {
      title: "Episode 5: Interesting things.",
      icons: [
        {
          sizes: "300x300",
          src: "/ep-5-icon.png",
          type: "image/png",
        },
      ],
      downloadTotal: 60 * 1024 * 1024,
    },
  );
});

id 記錄到控制檯會返回 "my-fetch"

js
console.log(bgFetch.id); // "my-fetch"

可以使用 match() 方法從註冊操作中的 BackgroundFetchRecord 中查詢特定的記錄。

js
bgFetch.match("/ep-5.mp3").then(async (record) => {
  if (!record) {
    console.log("No record found");
    return;
  }

  console.log(`Here's the request`, record.request);
  const response = await record.responseReady;
  console.log(`And here's the response`, response);
});

規範

規範
Background Fetch
# background-fetch-registration

瀏覽器相容性