A handy way to stop something in the middle, like canceling a network request you no longer need.
AbortController は、「途中でやめたい処理を止めるためのスイッチ」のような仕組みです。
たとえば fetch() でデータを読み込んでいる最中に、ユーザーが「キャンセル」したいときなどに使えます。
普通の fetch() は、一度始めたら終わるまで待つしかありません。
でも AbortController を使うと、自分で「もういらない!」と止めることができます。
使う流れは3ステップです。
JavaScript
const controller = new AbortController();
JavaScript
fetch('https://example.com/data', { signal: controller.signal })
.then(response => response.json())
.then(data => console.log(data))
.catch(error => {
if (error.name === 'AbortError') {
console.log('リクエストが中断されました');
} else {
console.error('その他のエラー:', error);
}
});
JavaScript
controller.abort();
controller.abort() を呼ぶと、fetch() は「AbortError」という特別なエラーを出して止まります。JavaScript
const controller = new AbortController();
setTimeout(() => {
controller.abort();
}, 3000); // 3秒後に強制中断
fetch('https://api.example.com/slow', { signal: controller.signal })
.then(response => response.text())
.then(console.log)
.catch(err => {
if (err.name === 'AbortError') {
console.log('3秒経ったので中断しました');
}
});
→ 「一定時間たったら自動で中止する」といった処理も簡単にできます。
AbortController は fetch だけでなく、addEventListener() など一部のAPIでも対応しています。