コンテンツにスキップ

JavaScript/AbortController

出典: フリー教科書『ウィキブックス(Wikibooks)』

AbortControllerオブジェクト

[編集]

AbortController は、JavaScriptにおける非同期操作(例:Fetch API)を中止するためのインターフェースです。ES2018 で導入され、非同期処理のキャンセルを実現するために使用されます。

概要

[編集]

AbortControllerは非同期処理の中断を制御するオブジェクトです。主にPromiseベースのAPIで利用され、AbortSignalと連携して処理の中止を指示します。

構文

[編集]

AbortControllerオブジェクトの基本的な構文は以下の通りです。

const controller = new AbortController();
const signal = controller.signal;

controller.abort();

プロパティ

[編集]
  • signal - AbortSignal オブジェクトを返します。これを使用して処理を中止します。

メソッド

[編集]
  • abort() - 関連付けられたAbortSignalを使って、処理の中断を通知します。

使用例

[編集]

Fetch APIとの連携

[編集]

AbortControllerを使用してHTTPリクエストを中断する例です。

// AbortControllerの作成
const controller = new AbortController();
const signal = controller.signal;

// Fetch APIのリクエスト
fetch('https://example.com/data', { signal })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(err => {
    if (err.name === 'AbortError') {
      console.log('Fetchリクエストが中断されました');
    } else {
      console.error('エラー:', err);
    }
  });

// 3秒後にリクエストを中断
setTimeout(() => controller.abort(), 3000);

イベントリスナーの中断

[編集]

AbortControllerを使用してイベントリスナーを中断する例です。

const controller = new AbortController();
const signal = controller.signal;

signal.addEventListener('abort', () => {
  console.log('処理が中断されました');
});

// 中断処理
controller.abort();

注意点

[編集]
  • abort() メソッドを呼び出すと、関連付けられたAbortSignalは中断され、signal.abortedtrueになります。
  • Fetch APIでリクエストが中断された場合、エラーのnameプロパティは'AbortError'になります。

対応ブラウザ

[編集]

以下は、AbortControllerオブジェクトのブラウザ対応状況です。

ブラウザ 対応バージョン
Google Chrome 66以上
Firefox 57以上
Safari 11.1以上
Edge 16以上
Opera 53以上

関連項目

[編集]

外部リンク

[編集]