ホームページ >ウェブフロントエンド >jsチュートリアル >`response.json()` が Fetch で Promise を返すのはなぜですか? 結果にアクセスするにはどうすればよいですか?

`response.json()` が Fetch で Promise を返すのはなぜですか? 結果にアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-15 17:24:13928ブラウズ

Why Does `response.json()` Return a Promise in Fetch, and How Can I Access the Result?

フェッチ応答処理における Promise と Promise Chaining についての洞察

fetch() API を試しているときに、動作に関して興味深い観察結果が現れました。の.json().

観察:

.then() に渡されたオブジェクト リテラル内で response.json() を返すと、Promise オブジェクトが取得されます。ただし、.then() ハンドラーから直接返された場合は、実際の値が返されます。

説明:

  • response.json はなぜPromise を返しますか?

response.json を呼び出すと、別の Promise が取得されますHTTP 応答本文 (まだロードされていません)。これは、ヘッダーを受信するとすぐに応答オブジェクトを受信しますが、本文はまだ利用できないためです。

  • .then() から Promise を返すと値が提供されるのはなぜですか?

これは約束の基本的な側面です。 Promise では、コールバック関数から Promise を返し、その後のその採用を有効にすることで、ネストすることなくチェーン可能になります。

代替アプローチ:

JSON を待機した後に応答ステータスにアクセスするには本体では、さまざまなアプローチを採用できます。

  • を使用して中間結果を返します。ネストされた .then() チェーン:

    fetch(url)
    .then(response => response.json())
    .then(data => ({
      data: data,
      status: response.status
    }))
    .then(res => {
      console.log(res.status, res.data.title);
    });
  • 非同期関数を使用して待機:

    const response = await fetch(url);
    const data = await response.json();
    console.log(response.status, data.title);

注意:

事前に応答ステータスを確認することを常にお勧めします。応答コンテンツにアクセスします。応答コンテンツには必ずしも JSON データが含まれているとは限りません。

以上が`response.json()` が Fetch で Promise を返すのはなぜですか? 結果にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。