Response: error() 静态方法

Baseline 已广泛支持

此功能已非常成熟,可在多种设备和浏览器版本上使用。自 2017 年 10 月以来,它已在各大浏览器中可用。

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

Response 接口的 error() 静态方法会返回一个与网络错误相关联的新的 Response 对象。

这主要在编写 service worker 时非常有用:它能够让 service worker 从 fetch 事件处理程序发送一个响应,该响应会导致主应用程序代码中的 fetch() 调用拒绝 Promise。

错误响应的 type 被设置为 error

语法

js
Response.error()

参数

无。

返回值

一个 Response 对象。

示例

从 Service Worker 返回网络错误

假设一个 Web 应用程序有一个 service worker,其中包含以下 fetch 事件处理程序:

js
// service-worker.js

self.addEventListener("fetch", (event) => {
  const url = new URL(event.request.url);
  if (url.pathname === "/salamander.jpg") {
    event.respondWith(Response.error());
  }
});

有了这个 service worker,应用程序中的所有 fetch 请求都将通过 service worker 发送到网络,但获取 "salamander.jpg" 的请求除外,该请求将被拒绝。这意味着以下主线程代码将抛出错误,并且 catch 处理程序将被执行。

js
// main.js

const image = document.querySelector("#image");

try {
  const response = await fetch("salamander.jpg");
  const blob = await response.blob();
  const objectURL = URL.createObjectURL(blob);
  image.src = objectURL;
} catch (e) {
  console.error(e);
}

规范

规范
Fetch
# ref-for-dom-response-error①

浏览器兼容性

另见