fetch API是当下较新的前后端交互api在比较高版本的历览器得到了支持例如谷歌浏览器中。
fetch提供了 fetch/Request/Header等方法用于ajax请求
1:header:用于设置ajax请求的请求头。
var headers=new Headers({
"Content-Type":"text/html"
......
})
同时也可以用append方法往headers中增加元素
2:Request方法用于设置
var request=new Request(URL,{
配置信息
})
配置信息的种类
1:headers
2:Method
.....
3:fetch方法fetch的灵魂用于具体的请求
fetch方法返回一个promise对象
fetch( request ).then(function(data){
console.log(data.json)
})
Fetch API从提出到实现一直存在着争议,由于一直现存的历史原因(例如HTML5的拖拽API被认为太过稀疏平常,Web Components标准被指意义不大)。 因此重新设计一个新的API来替代久经沙场历练的XMLHttpRequest就变得阻力重重。
其中一种反对观点认为,Promises缺少了一些重要的XMLHttpRequest的使用场景。例如, 使用标准的ES6 Promise你无法收集进入信息或中断请求。而Fetch的狂热开发者更是试图提供Promise API的扩展用于取消一个Promise。 这个提议有点自挖墙角的意思,因为将这将让Promise变得不符合标准。但这个提议或许会导致未来出现一个可取消的Promise标准。 但另一方面,使用XMLHttpRequest你可以模拟进度(监听progress事件),也可以取消请求(使用abort()方法)。 但是,如果有必要你也可以使用Promise来包裹它。
另一种反对观点认为,Web平台需要的是更多底层的API,而不是高层的API。对此的回答恰恰是, Fetch API足够底层,因为当前的WHATWG标准定义了XMLHttpRequest.send()方法其实等同于fetch的Requset对象。 Fetch中的Response.body实现了getReader()方法用于渐增的读取原始字节流。 例如,如果照片列表过大而放不进内存的话,你可以使用下面的方法来处理:
目前Chrome 42+, Opera 29+, 和Firefox 39+都支持Fetch。微软也考虑在未来的版本中支持Fetch。 讽刺的是,当IE浏览器终于微响应实现了progress事件的时候,XMLHttpRequest也走到了尽头。 目前,如果你需要支持IE的话,你需要使用一个polyfill库。
总结
在本文中我们为你介绍了Fetch API的整体概况以及它所能解决的问题。在表层, 这个API看起来非常的简单,但它同时也与一些底层的API相关联,例如Streams, 这让客户端编程有点类似于系统编程。
网友评论