ホームページ >ウェブフロントエンド >jsチュートリアル >`response.json()` が Fetch で Promise を返すのはなぜですか? 結果にアクセスするにはどうすればよいですか?
フェッチ応答処理における Promise と Promise Chaining についての洞察
fetch() API を試しているときに、動作に関して興味深い観察結果が現れました。の.json().
観察:
.then() に渡されたオブジェクト リテラル内で response.json() を返すと、Promise オブジェクトが取得されます。ただし、.then() ハンドラーから直接返された場合は、実際の値が返されます。
説明:
response.json を呼び出すと、別の Promise が取得されますHTTP 応答本文 (まだロードされていません)。これは、ヘッダーを受信するとすぐに応答オブジェクトを受信しますが、本文はまだ利用できないためです。
これは約束の基本的な側面です。 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 サイトの他の関連記事を参照してください。