FetchEvent: request 属性

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

requestFetchEvent 接口的只读属性,它返回触发事件处理程序的 Request

此属性是不可为空的(从 Firefox 版本 46 开始)。如果请求未通过其他方式提供,则构造函数 options 对象必须包含请求(请参阅 FetchEvent())。

一个 Request 对象。

示例

此代码片段来自 service worker fetch 示例 (运行 fetch 示例)。 onfetch 事件处理程序监听 fetch 事件。当触发时,将一个 promise 传回受控页面,以 FetchEvent.respondWith()。此 promise 解析为 Cache 对象中与第一个匹配的 URL 请求。如果未找到匹配项,则代码将从网络获取响应。

该代码还处理从 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

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅