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①

瀏覽器相容性

另見