💡
ky(軽量 fetch API ラッパー)における、ネットワークエラーとタイムアウトの扱い
ky とは:薄い fetch API ラッパーである。
- 公式ページ
-
axiosやfetchに替わるKyのススメ #JavaScript - Qiita
- 使うメリットを日本語でざっくり知りたい人はこちら
投げられるエラーの型、メッセージ
_ | ネットワークエラー | タイムアウト |
---|---|---|
エラーの型 | TypeError | TimeoutError [1] |
エラーメッセージ | Failed to fetch | Request timed out: GET {url} |
- ネットワークエラーのメッセージが曖昧で分かりづらいことに注意。
- ネットワークエラーを区別したい場合は axios を使うべし。(
AxiosError#code === 'ERR_NETWORK'
で識別できる)
リトライ
ネットワークエラー | タイムアウト |
---|---|
◯ | ❌ |
タイムアウト時はリトライされない。
呼ばれる Hooks
_ | ネットワークエラー | タイムアウト | 備考 |
---|---|---|---|
beforeRequest | ◯ | ◯ | |
beforeError | ❌ | ❌ | これは Issue になっている。 Pass TimeoutError s to beforeError hooks · Issue #508 · sindresorhus/ky
|
beforeRetry | ◯ | ❌ | 上述のとおり、タイムアウト時にはリトライされないため、beforeRetry も呼ばれない。 |
afterResponse | ❌ | ❌ | afterResponse はサーバーから何らかのレスポンスが返ってきた場合のみ呼ばれるため、このケースでは呼ばれない。 |
-
ky が独自に定義しているエラー型 ↩︎
Discussion