【发布时间】:2016-02-12 06:42:11
【问题描述】:
基于its MDN description,Request实现了Body的功能,如text()。但是,我不知道这些功能实际上是做什么的。他们似乎什么也没做。
我有这样的代码
var r = new Request('http://google.com');
r.text().then(function(text) {
alert(JSON.stringify(text));
}, function(error) {
alert("error");
});
发生的情况是,promise 立即解析,使用空字符串,并且没有请求发生 - 如果您查看开发工具(或 wireshark)中的网络活动,没有实际请求发生。但也没有错误。
发生了什么事? Body API 的用途是什么?
MDN 上的描述谈到“响应流”但没有响应(因为还没有实际获取)。(编辑:由于我回答了我自己的问题,我还编辑了 MDN页面,所以现在有意义。)
The specs 声明如下:
一个请求对象的消耗体算法,给定一个类型,运行这些 步骤:
如果此 Request 对象受到干扰,则返回一个新的 Promise 被拒绝 带有 TypeError。
设置干扰标志。
让 p 成为一个新的承诺。
并行运行这些子步骤:
令 bytes 为空字节序列。
如果请求的正文不为空,则将字节设置为读取的结果 请求的正文,直到它返回流结束。
使用运行包数据算法的结果解析 p 字节、类型和 MIME 类型。如果抛出异常,则拒绝 p 那个例外。
返回页码
我不是很聪明。
(注意:我知道我要问的是一个非常详细的问题。我不是在问fetch/Response/Request 的一般用途。)
【问题讨论】:
标签: javascript fetch-api