根据它的MDN描述,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)中查看Network活动,则不会发生实际请求。但是也没有错误。
到底是怎么回事?Body
API的目的是什么?
MDN上的描述是关于“响应流”的,但没有响应(因为还没有实际的获取)。 (编辑:由于我回答了自己的问题,因此我还编辑了MDN页面,因此现在很有意义。)
规格说明如下:
给定类型的请求对象的消耗主体算法运行以下步骤:
如果此Request对象被打扰,则返回一个新的Promise,它被TypeError拒绝。
设置受干扰的标志。
让p成为一个新的承诺。
并行运行这些子步骤:
令字节为空字节序列。
如果请求的主体不为null,则将字节设置为从请求的主体读取的结果,直到它返回流的末尾。
通过使用字节,类型和MIME类型运行包数据算法的结果来解析p。如果抛出异常,则拒绝带有该异常的p。
返回p。
我不是很聪明。
(注:我知道,我所问的是一个非常详细的问题,我不是问什么。fetch
/ Response
/Request
不一般。)
实际上,可以向请求添加一些主体,以此类推,.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");
});
基本上就是这样。问题中的示例没有正文,因此使用空字符串进行解析。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句