BackgroundFetchRegistration
注意:此功能在 Web Workers 中可用。
BackgroundFetchRegistration 介面是 Background Fetch API 的一部分,用於表示單個後臺獲取操作。
BackgroundFetchRegistration 例項由 BackgroundFetchManager.fetch() 或 BackgroundFetchManager.get() 方法返回,因此沒有建構函式。
例項屬性
它還繼承了其父級 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實驗性-
當以下任何屬性發生更改時觸發:
uploaded、downloaded、result或failureReason。
示例
以下程式碼建立了一個名為 bgFetch 的 BackgroundFetchRegistration,其 id 為 "my-fetch"。
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"。
console.log(bgFetch.id); // "my-fetch"
可以使用 match() 方法從註冊操作中的 BackgroundFetchRecord 中查詢特定的記錄。
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 |
瀏覽器相容性
載入中…