JavaScript/AbortController
表示
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.aborted
はtrue
になります。- Fetch APIでリクエストが中断された場合、エラーの
name
プロパティは'AbortError'
になります。
対応ブラウザ
[編集]以下は、AbortControllerオブジェクトのブラウザ対応状況です。
ブラウザ | 対応バージョン |
---|---|
Google Chrome | 66以上 |
Firefox | 57以上 |
Safari | 11.1以上 |
Edge | 16以上 |
Opera | 53以上 |