我知道fetch正在使用promises,它们都允许你向服务器发出AJAX请求。我已经读过fetch有一些额外的功能,这些功能在XMLHttpRequest中是不可用的(并且在fetch polyfill中,因为它基于XHR)。 fetch API有哪些额外功能?
答案 0 :(得分:92)
你可以用fetch做一些事情而不用XHR:
no-cors
个请求,从未实施CORS的服务器获取响应。您无法直接从JavaScript访问响应正文,但您可以将其与其他API(例如Cache API)一起使用; 您可以使用XHR做一些事情,但您不能使用提取,但它们迟早会被提供(请阅读"未来的改进&# 34;段落:https://hacks.mozilla.org/2015/03/this-api-is-so-fetching/):
答案 1 :(得分:46)
mozAnon
flag或AnonXMLHttpRequest
构造函数之外)FormData
个实例fetch
的{{1}}模式答案 2 :(得分:6)
上面的答案很好并且提供了很好的见解,但我在这个google developers blog entry中分享了相同的观点,因为主要区别(从实际的角度来看)是从内容中返回的内在承诺的便利性fetch
而不必像这样编写代码
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) => { ... });