全局 fetch 函数是 web 请求和处理响应的简单方式,XMLHttpRequest的使用相对比较复杂。但fetch存在一些兼容性问题,例如IE8以下不支持,需要使用Fetch Polyfill 为不支持的浏览器重新创建功能。
对于传统的XMLHttpRequest而言,必须使用它的一个实例来执行请求和检索返回的响应。 但是通过Fetch API 能够明确的配置请求对象。
fetch请求会接受两个参数,返回一个promise对象。下面是一个简单的栗子:
const path: string = "https://cn.bing.com/" |
Headers
可以通过has/get进行查询和获取
const content: string = "Hello"; |
Response对象
当fetch() promise被解析时,Response实例被返回,以下是控制台打出的一个Response对象 。
有图可见,response对象上有一些属性Response.status,Response.statusText,Response.ok等
Response对象还有一些其他的方法:
- Response.clone():创建一个Response对象的克隆
- Response.error(): 返回一个绑定了网络错误的新的Response对象
- Response.blob():返回一个被解析为Blob格式的promise对象,并且将它设置为已读(只能被读取一次)
- Response.formData():返回一个被解析为FormData格式的promise对象
- Response.json():返回一个被解析为JSON格式的promise对象
- Response.text():返回一个被解析为USVString格式的promise对象
目前Fetch还没有提供取消请求的方法
更新:
目前fetch提供了一种通过 AbortController构造函数创建出实例对象,在实例对象上包含一个标识 signal,将这个标识放入fetch的第二个参数 options中,就可以通过实例对象上的abort()方法来中断请求。
const controller: AbortController = new AbortController(); |