Response

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

 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.blobResponse 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
28[1]

未实现
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.

相关链接

文档标签和贡献者