Fetchはpromiseを使用していることを知っており、どちらもサーバーへのAJAXリクエストを行うことができます。フェッチにはいくつかの追加機能があり、XMLHttpRequest(およびXHRに基づいているため、フェッチポリフィル)では使用できないということを読んだことがあります。フェッチAPIにはどのような追加機能がありますか?
XHRではなくフェッチでできることがいくつかあります。
no-cors
要求を実行して、CORSを実装していないサーバーから応答を取得できます。 JavaScriptから直接応答本文にアクセスすることはできませんが、他のAPI(キャッシュAPIなど)で使用できます。XHRでできることはまだフェッチではできませんが、遅かれ早かれ利用できるようになります(「今後の改善点」の段落をご覧ください: https:/ /hacks.mozilla.org/2015/03/this-api-is-so-fetching/ ):
この記事 https://jakearchibald.com/2015/thats-so-fetch/ には、より詳細な説明が含まれています。
mozAnon
フラグ またはAnonXMLHttpRequest
コンストラクターを使用することは別として)FormData
インスタンスを返すことができませんfetch
のno-cors
モードに相当するものはありません上記の答えは優れており、良い洞察を提供しますが、主な違いは(実用的な観点から)組み込みの利便性であるという点で、これと同じ意見を共有しています google developers blog entryfetch
から返された約束
このようなコードを書く代わりに
function reqListener() {
var data = JSON.parse(this.responseText);
}
function reqError(err) { ... }
var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.onerror = reqError;
oReq.open('get', './api/some.json', true);
oReq.send();
物事を整理して、約束と最新の構文でもう少し簡潔で読みやすいものを書くことができます
fetch('./api/some.json')
.then((response) => {
response.json().then((data) => {
...
});
})
.catch((err) => { ... });