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 |
浏览器兼容性
加载中…