起こったこと
Fetch
リクエストを AbortController.abort(reason)
で中断したとき、catch(err)
で受け取る err
の中身が Edge と Chrome では reason
であるのに対し、Safari では AbortError
となった。
controller = new AbortController();
const signal = controller.signal;
try {
const response = await fetch(request);
controller.abort(reason);
} catch (err) {
console.log(err); // ここがブラウザによって異なる
}
reason を正しく取得する方法
reason
を表示したい場合は、controller.signal.reason
を利用する。
AbortController.abort()
または AbortSignal.abort()
によって処理が中断された場合、
signal.reason
から渡された reason
を取得できる。
この方法であれば ブラウザによる差異は生じず、仕様上も推奨される reason
の取り方 である。