BackgroundFetchManager: fetch() 方法

有限可用性

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

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

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

fetch()BackgroundFetchManager 接口的方法,用于启动后台获取操作,传入一个或多个 URL 或 Request 对象。

语法

js
fetch(id, requests)
fetch(id, requests, options)

参数

id

一个开发人员定义的标识符,可以传递给其他方法以检索此操作的 BackgroundFetchRegistration

requests

一个 RequestInfo 对象或一个 RequestInfo 对象数组。

每个 RequestInfo 对象都是一个 Request 对象,或者是一个字符串,该字符串将作为 input 参数传递给 Request() 构造函数。

options 可选

一个对象,它将用于自定义浏览器向用户显示的获取进度对话框。它具有以下属性

title 可选

一个字符串,用作进度对话框的标题。

icons 可选

一个对象数组,每个对象代表浏览器可能用于进度对话框的图标。每个对象具有以下属性

src

一个字符串,代表指向图标文件的 URL。

sizes 可选

一个字符串,代表图像的大小,使用与 <link> 元素的 sizes 属性相同的语法。

type 可选

一个字符串,代表图标的 MIME 类型。

label 可选

一个字符串,代表图标的可访问名称。

downloadTotal 可选

一个数字,代表获取操作的估计总下载大小(以字节为单位)。这用于向用户显示下载的大小以及显示用户的下载进度。

一旦总下载大小超过 downloadTotal,则获取操作将被中止。

返回值

一个 Promise,它解析为一个 BackgroundFetchRegistration 对象。

异常

TypeError

如果未提供请求,如果请求的模式为 no-cors,如果不存在服务工作者,如果请求的 id 已经存在请求,或者请求失败,则会引发此异常。

AbortError DOMException

指示获取操作已中止。

NotAllowedError DOMException

指示用户尚未授予执行后台获取操作的权限。

QuotaExceededError DOMException

如果存储请求失败,因为超出了浏览器的 存储配额,则会抛出此异常。

示例

以下示例展示了如何使用 fetch() 启动后台获取操作。在具有活动 服务工作者 的情况下,使用 ServiceWorkerRegistration.backgroundFetch 属性访问 BackgroundFetchManager 对象并调用其 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",
          label: "Downloading a show",
        },
      ],
      downloadTotal: 60 * 1024 * 1024,
    },
  );
});

规范

规范
后台获取
# background-fetch-manager-fetch

浏览器兼容性

BCD 表仅在浏览器中加载