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

浏览器兼容性