Request: signal プロパティ

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2019.

メモ: この機能はウェブワーカー内で利用可能です。

signalRequest インターフェイスの読み取り専用プロパティで、このリクエストに関連付けられた AbortSignal を返します。

AbortSignal オブジェクトです。

js
// 新しい中止コントローラーを作成
const controller = new AbortController();

// このコントローラーの AbortSignal オブジェクトを使用してリクエストを作成
const req = new Request("/", { signal: controller.signal });

// 中止された場合にメッセージをログ出力するイベントハンドラーを追加
req.signal.addEventListener("abort", () => {
  console.log("abort");
});

// 中止された場合は、AbortSignalの理由をログ出力
fetch(req).catch(() => {
  if (req.signal.aborted) {
    if (req.signal.reason) {
      console.log(`リクエストは ${req.signal.reason} が原因で中止されました。`);
    } else {
      console.log("リクエストは中止されましたが、理由は示されませんでした。");
    }
  } else {
    console.log("リクエストは中止されませんでしたが、異常終了しました。");
  }
});

// 実際にリクエストを中止
controller.abort();

仕様書

Specification
Fetch
# ref-for-dom-request-signal②

ブラウザーの互換性