42

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))

これは、読んで推論するのがはるかに難しいものです。だから私の質問は:なぜこれが必要なのですか?応答値としてプロミスを持つことのポイントは何ですか? これを処理するより良い方法はありますか?

4

2 に答える 2