AbortController and AbortSignal
AbortController インターフェイスは 1 つ以上のウェブリクエストをいつでも中断することを可能にするコントローラーオブジェクトを表します。
新しい AbortController オブジェクトは、 AbortController() コンストラクターを使って新しく生成することができます。非同期操作の通信は、AbortSignal オブジェクトを使って行われます。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 66 | 16 | 57 | 12.1 | 66 | 12.2 | |
| abort() は AbortController インターフェイスのメソッドで、非同期操作を完了前に中止します。 これはフェッチリクエスト、あらゆるレスポンス本体の消費、ストリームを中止することができます。 | 66 | 16 | 57 | 12.1 | 66 | 12.2 |
abort (reason parameter) `reason` パラメータ | 98 | 98 | 97 | 15.4 | 98 | 15.4 |
| AbortController() は、新しい AbortController オブジェクトインスタンスを生成します。 | 66 | 16 | 57 | 12.1 | 66 | 12.2 |
| signal は AbortController インターフェイスの読み取り専用プロパティで、求めに応じて非同期操作とやりとりしたり中止したりするために使用される AbortSignal オブジェクトインスタンスを返します。 | 66 | 16 | 57 | 12.1 | 66 | 12.2 |
| AbortSignal インターフェイスは非同期操作(フェッチリクエストなど)とやりとりし、必要に応じて AbortController オブジェクトを介して中止することを可能にするシグナルオブジェクトを表します。 | 66 | 16 | 57 | 11.1 | 66 | 11.3 |
| abort は AbortSignal のイベントで、関連するリクエストが中止されたとき、つまり AbortController.abort() を使用して中止されたときに発行されます。 | 66 | 16 | 57 | 11.1 | 66 | 11.3 |
| AbortSignal.abort() は静的メソッドで、既に中止と設定されている(かつ AbortSignal/abort_event イベントが発生していない) AbortSignal を返します。 | 93 | 93 | 88 | 15 | 93 | 15 |
abort_static (reason parameter) `reason` パラメータ | 98 | 98 | 97 | 15.4 | 98 | 15.4 |
| aborted は読み取り専用プロパティで、そのシグナルがやりとりしている非同期操作が中止されているか (true)、されていないか (false) を示す値を返します。 | 66 | 16 | 57 | 11.1 | 66 | 11.3 |
| reason は読み取り専用プロパティで、中止の理由を示す JavaScript の値を返します。 | 98 | 98 | 97 | 15.4 | 98 | 15.4 |
| throwIfAborted() メソッドは、シグナルが中止された場合、シグナルの中止理由 (AbortSignal.reason) の例外を発生させ、それ以外の場合は何もしません。 | 100 | 100 | 97 | 15.4 | 100 | 15.4 |
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.1)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.2)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.1)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.2)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.1)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.2)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.1)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (12.2)
- `window.AbortController` が定義されているにもかかわらず、実際には `fetch` リクエストを中止しません。バグ 174980 を参照してください。
実務での使いどころ
-
AbortController and AbortSignal の活用
AbortController インターフェイスは 1 つ以上のウェブリクエストをいつでも中断することを可能にするコントローラーオブジェクトを表します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。