Request.text()(以及从 Body 实现的其他函数)实际上做了什么
What does Request.text() (and other functions implemented from Body) actually do?
根据它的MDN描述,Request
已经实现了Body
的功能,比如text()
。但是,我不知道这些功能实际上做了什么。他们似乎什么也没做。
我有这样的代码
var r = new Request('http://google.com');
r.text().then(function(text) {
alert(JSON.stringify(text));
}, function(error) {
alert("error");
});
发生的情况是承诺立即解析,使用空字符串,并且没有发生任何请求 - 如果您查看开发工具(或 wireshark(中的网络活动,则不会发生实际请求。但也没有错误。
这是怎么回事?Body
API 的目的是什么?
规范声明如下:
请求对象的消耗体算法(给定类型(运行这些 步骤:
如果此请求对象受到干扰,则返回拒绝的新承诺 带有类型错误。
设置干扰标志。
让p成为一个新的承诺。
并行运行以下子步骤:
让字节为空字节序列。
如果请求的正文不为 null,则将字节设置为从中读取的结果 请求的正文,直到它返回流结束。
使用运行包数据算法的结果解析 p 字节、类型和 MIME 类型。如果引发异常,则拒绝 p 那个例外。
返回 p.
我不是很聪明。
(注意:我知道我问的是一个非常详细的问题。我不是在问fetch
/Response
/Request
一般是做什么的。
的解释:
遵循 1、请求对象的消耗体算法(给定类型(运行这些 步骤:
如果此请求对象受到干扰,则返回拒绝的新承诺 带有类型错误。
设置干扰标志。
让p成为一个新的承诺。
并行运行以下子步骤:
让字节为空字节序列。
如果请求的正文不为 null,则将字节设置为从中读取的结果 请求的正文,直到它返回流结束。
使用运行包数据算法的结果解析 p 字节、类型和 MIME 类型。如果引发异常,则拒绝 p 那个例外。
返回 p.
2、3、4.1、4.2 为 false,4.3 将您带到包数据算法 (https://fetch.spec.whatwg.org/#concept-body-package-data(,对于text
,返回在bytes
上运行 utf-8 解码的结果。
bytes
是一个空字节序列,因此承诺解析为空字符串。
可以在请求中添加一些正文,.text()
等将返回请求的正文。
一个简单的例子:
// method cannot be GET for custom body
var r = new Request('http://google.com', {method: 'POST', body: "something"});
r.text().then(function(text) {
alert(JSON.stringify(text)); // alerts "something"
}, function(error) {
alert("error");
});
基本上就是这样。问题中的示例没有正文,因此它使用空字符串解析。
- Jquery未定义函数正在停止其他操作
- 执行php函数的onclick事件的其他替代方案
- 如何在.js函数中检索来自其他模板的表单的目标值
- 对其他函数使用匿名函数's参数
- 创建要在其他函数中使用的全局变量
- 调试一个简单的jQuery函数;想知道是否与其他代码冲突
- 在Meteor中如何将数据从函数内部复制到其他模板
- 在Jquery调用之间添加其他函数
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- Mocking console.log()/MOCHA测试框架中的任何其他函数
- 如何从ipify函数返回ip地址,以便在其他函数中使用
- 如果没有其他函数链接到promise,则默认行为
- Javascript创建函数,以便在其他函数之间共享变量
- AngularJS:如何与其他控制器共享作用域函数和变量
- Firefox扩展开发:如何在内容脚本中创建一个全局函数,以便其他加载的脚本文件可以访问它
- 使通过函数加载的JSON可用于其他函数
- 如何使用 javascript 函数取决于是否其他
- 如何在 JavaScript 中访问函数中的其他属性值作为对象属性值
- 有没有办法将其他参数传递给 scrollTarget 回调函数
- 如何在创建的字段上应用 .change 函数 b 其他字段的 .change 函数