js ES6 fetch 方法
fetch 是一种 HTTP 数据请求的方式,它不是 ajax 的进一步封装,而是 XMLHttpRequest(以下简称 XHR)的一种替代方案。它是原生的 JavaScript。@Vue/cli 中,自带 fetch,可以直接使用它。
fetch 与 ajax 的区别:
- fetch() 方法会返回的一个 promise 对象,它不会拒绝 http 的错误状态,即使响应是一个HTTP 404或者500,Promise 状态也会被标记为 resolve,但是会将 resolve 的返回值的 ok 属性设置为 false。当仅当网络故障时或请求被阻止时,才会标记为 reject。而 ajax,默认返回的是一个普通对象。
- 在默认情况下,fetch() 方法不会接受或者发送 cookies。只有手动设置 credentials 为 include 时,才可以发送 cookies。而 ajax,允许接收和发送 cookies。
- fetch() 方法不支持超时(timeout)处理。而 ajax,支持超时处理。
fetch('http://example.com/movies.json')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
console.log(myJson);
});
fetch 方法接受两个参数:一个 URL 地址或一个 request 对象 和 (可选的)一个配置项对象。
fetch 方法,总是返回一个包含响应结果的 Promise 对象。当该 Promise 对象为 resolve 状态时,在其回调函数中可获取 Response 对象。