FetchEvent: request 属性
注意:此功能仅在 Service Workers 中可用。
request 是 接口的一个只读属性,它返回触发事件处理程序的 FetchEventRequest 对象。
此属性不可为空(自 Firefox 46 版本起)。如果请求不是通过其他方式提供的,则构造函数 options 对象必须包含一个请求(请参阅 FetchEvent())。
值
一个 Request 对象。
示例
此代码片段摘自 Service Worker 预取示例(在线运行预取示例)。 事件处理程序监听 onfetchfetch 事件。当事件触发时,将一个 Promise 回传给受控页面,以供 FetchEvent.respondWith() 使用。此 Promise 会解析为 对象中第一个匹配的 URL 请求。如果没有找到匹配项,则代码将从网络获取响应。Cache
该代码还处理了从 fetch() 操作中抛出的异常。请注意,HTTP 错误响应(例如 404)不会触发异常。它将返回一个具有适当错误代码设置的正常响应对象。
js
self.addEventListener("fetch", (event) => {
console.log("Handling fetch event for", event.request.url);
event.respondWith(
caches.match(event.request).then((response) => {
if (response) {
console.log("Found response in cache:", response);
return response;
}
console.log("No response found in cache. About to fetch from network…");
return fetch(event.request)
.then((response) => {
console.log("Response from network is:", response);
return response;
})
.catch((error) => {
console.error("Fetching failed:", error);
throw error;
});
}),
);
});
规范
| 规范 |
|---|
| Service Workers # fetch-event-request |
浏览器兼容性
加载中…