BackgroundFetchRegistration

可用性有限

此功能不是基线,因为它在一些使用最广泛的浏览器中无法正常工作。

实验性: 这是一项 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

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

BackgroundFetchRegistrationBackground 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,解析为包含请求和响应的 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-registration

浏览器兼容性

BCD 表格仅在浏览器中加载