这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
Fetch API 的Response接口呈现了对一次请求的响应数据
你可以使用Response.Response() 构造函数来创建一个Response对象,但一般更可能遇到的情况是,其他的API操作返回了一个Response对象,例如一个service worker 的Fetchevent.respondWith,或者一个简单的 GlobalFetch.fetch()
构造函数
Response.Response()- 创建一个新的Response对象.
属性
Response.type只读- 包含Response的类型 (例如,
basic,cors). Response.url只读- 包含Response的URL.
Response.useFinalURL- 包含了一个布尔值来标示这是否是该Response的最终URL.
Response.status只读- 包含Response的状态码 (例如,
200 成功). Response.ok只读- 包含了一个布尔值来标示该Response成功(状态码200-299) 还是失败.
Response.redirected只读- 表示该Response是否来自一个重定向,如果是的话,它的URL列表将会有多个
Response.statusText只读- 包含了与该Response状态码一致的状态信息 (例如, OK对应
200). Response.headers只读- 包含此Response所关联的
Headers对象.
Response 实现了 Body, 所以以下属性同样可用:
Body.bodyUsed只读- 包含了一个布尔值来标示该Response是否读取过
Body.
方法
Response.clone()- 创建一个Response对象的克隆
Response.error()- 返回一个绑定了网络错误的新的Response对象
Response.redirect()- 用另一个URL创建一个新的 response.
Response 实现了 Body, 所以以下方法同样可用:
Body.arrayBuffer()- 读取
Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为ArrayBuffer格式的promise对象 Body.blob()- 读取
Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为Blob格式的promise对象 Body.formData()- 读取
Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为FormData格式的promise对象 Body.json()- 读取
Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为JSON格式的promise对象 Body.text()- 读取
Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为USVString格式的promise对象 - 解析完整的
Response,并返回一个USVString对象的promise
示例
在我们的基础实例 (点击运行) 中 , 我们使用了一个简单的函数调用 , 调用了 fetch() 函数来获取一张图片并将其显示在 HTML 的 IMG 标签中 , fetch() 函数返回了一个promise,它使用与资源获取操作相关联的Response对象进行解析. 你会注意到,由于我们正在请求一张图片,我们需要运行Body.blob(Response implements body),以使响应成为正确的MIME类型。
var myImage = document.querySelector('.my-image');
fetch('flowers.jpg').then(function(response) {
return response.blob();
}).then(function(response) {
var objectURL = URL.createObjectURL(response);
myImage.src = objectURL;
});
你也可以使用 Response.Response() 这样的构造方法来创建自定义的响应体对象
var myResponse = new Response();
规范
| Specification | Status | Comment |
|---|---|---|
| Fetch Response |
Living Standard | Initial definition |
浏览器兼容性
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | 42 41[1] |
39 (39) 34[1] |
未实现 |
29 |
未实现 |
| Feature | Android | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | 未实现 | 未实现 | 未实现 | 未实现 | 未实现 | 未实现 | 未实现 |
[1] This feature is implemented behind a preference.