1. ホーム
  2. ジャバスクリプト

[解決済み】Fetch APIとXMLHttpRequestの比較

2022-04-05 23:23:22

質問

Fetch APIでは Promise があり、どちらもサーバーへの AJAX リクエストを行うことができます。

Fetch API には、Fetch API にはない特別な機能があることを読みました。 XMLHttpRequest (をベースにしているので、Fetch API polyfillでも)。 XHR ).

Fetch APIにはどんな機能があるのですか?

どのように解決するのですか?

フェッチでできて、XHRでできないことがいくつかあります。

  • リクエストオブジェクトとレスポンスオブジェクトでCache APIを使用することができます。
  • を実行することができます。 no-cors リクエストを行い、CORS を実装していないサーバーからレスポンスを取得します。JavaScript から直接レスポンスボディにアクセスすることはできませんが、他の API (例: Cache API) で使用することは可能です。
  • レスポンスのストリーミング(XHRではレスポンス全体がメモリ上にバッファリングされますが、fetchでは低レベルのストリームにアクセスできるようになります)。これはまだすべてのブラウザで利用できるわけではありませんが、近いうちに利用できるようになるでしょう。

XHRでできることのうち、fetchではまだできないことがいくつかありますが、それらはいずれ利用できるようになるでしょう(ここの "将来の改良"のパラグラフを読んでください)。 https://hacks.mozilla.org/2015/03/this-api-is-so-fetching/ ):

  • リクエストを中止する (@sideshowbarker のコメントで説明されているように、これは現在 Firefox と Edge で動作しています)。
  • 進捗状況を報告する。

この記事 https://jakearchibald.com/2015/thats-so-fetch/ には、より詳細な説明があります。