BackgroundFetchManager: fetch() 方法
注意:此功能在 Web Workers 中可用。
fetch()
是 BackgroundFetchManager
接口的方法,用于启动后台获取操作,传入一个或多个 URL 或 Request
对象。
语法
fetch(id, requests)
fetch(id, requests, options)
参数
id
-
一个开发人员定义的标识符,可以传递给其他方法以检索此操作的
BackgroundFetchRegistration
。 requests
-
一个
RequestInfo
对象或一个RequestInfo
对象数组。每个
RequestInfo
对象都是一个Request
对象,或者是一个字符串,该字符串将作为input
参数传递给Request()
构造函数。 options
可选-
一个对象,它将用于自定义浏览器向用户显示的获取进度对话框。它具有以下属性
title
可选-
一个字符串,用作进度对话框的标题。
icons
可选-
一个对象数组,每个对象代表浏览器可能用于进度对话框的图标。每个对象具有以下属性
downloadTotal
可选-
一个数字,代表获取操作的估计总下载大小(以字节为单位)。这用于向用户显示下载的大小以及显示用户的下载进度。
一旦总下载大小超过
downloadTotal
,则获取操作将被中止。
返回值
一个 Promise
,它解析为一个 BackgroundFetchRegistration
对象。
异常
TypeError
-
如果未提供请求,如果请求的模式为
no-cors
,如果不存在服务工作者,如果请求的id
已经存在请求,或者请求失败,则会引发此异常。 AbortError
DOMException
-
指示获取操作已中止。
NotAllowedError
DOMException
-
指示用户尚未授予执行后台获取操作的权限。
QuotaExceededError
DOMException
-
如果存储请求失败,因为超出了浏览器的 存储配额,则会抛出此异常。
示例
以下示例展示了如何使用 fetch()
启动后台获取操作。在具有活动 服务工作者 的情况下,使用 ServiceWorkerRegistration.backgroundFetch
属性访问 BackgroundFetchManager
对象并调用其 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",
label: "Downloading a show",
},
],
downloadTotal: 60 * 1024 * 1024,
},
);
});
规范
规范 |
---|
后台获取 # background-fetch-manager-fetch |
浏览器兼容性
BCD 表仅在浏览器中加载