JavaScript fetch API を使用してサーバーからリクエストする場合は、次のようにする必要があります。
fetch(API)
.then(response => response.json())
.catch(err => console.log(err))
ここで、response.json()
その約束を解決しています。
問題は、 のエラーをキャッチしたい場合は404
、応答の約束を解決してから、フェッチの約束を拒否する必要があるということですcatch
。これは、ネットワーク エラーが発生した場合にのみ終了するためです。したがって、フェッチ呼び出しは次のようになります
fetch(API)
.then(response => response.ok ? response.json() : response.json().then(err => Promise.reject(err)))
.catch(err => console.log(err))
これは、読んで推論するのがはるかに難しいものです。だから私の質問は:なぜこれが必要なのですか?応答値としてプロミスを持つことのポイントは何ですか? これを処理するより良い方法はありますか?