Javascript 使用fetch()Webapi
我试图了解浏览器的原生webapiJavascript 使用fetch()Webapi,javascript,json,http,get,fetch,Javascript,Json,Http,Get,Fetch,我试图了解浏览器的原生webapifetch()api是如何工作的。到目前为止,我有这个:它工作得很好。但我不明白的是,为什么我必须将流式字符串转换为JSON?我不知道为什么有人甚至需要通过RESTAPI将JSON作为字符串流式传输?我很确定我在这里遗漏了一些东西,但我不确定应该如何告诉fetch()以JSON而不是ReadableByteStream的形式获取响应,我必须将其转换为字符串并解析为JSON 我的问题是, 为什么这里要流式传输字符串 我如何告诉fetch()以文本或json的形式获
fetch()
api是如何工作的。到目前为止,我有这个:它工作得很好。但我不明白的是,为什么我必须将流式字符串转换为JSON?我不知道为什么有人甚至需要通过RESTAPI将JSON作为字符串流式传输?我很确定我在这里遗漏了一些东西,但我不确定应该如何告诉fetch()
以JSON而不是ReadableByteStream
的形式获取响应,我必须将其转换为字符串并解析为JSON
我的问题是,
字符串
fetch()
以文本或json的形式获取响应,以便按照中提到的response.json()
或response.text()
?(仅供参考,我尝试添加一个header对象,创建一个header
实例并将其传递给fetch()
都没有改变我的响应你只需要打个电话
fetch("https://api.github.com/users/ajainarayanan").then(res => res.json());
下面是一些修改过的代码,它们具有相同的结果
fetch("https://api.github.com/users/ajainarayanan")
.then(res => res.json())
.then(res => console.log('Profile: ', JSON.stringify(res, null, 2)));
显然,我必须在一个
然后处理程序中执行response.json()
,并在随后的然后处理程序中具有实际值。我没有意识到的是response.json()
返回了另一个Promise
我应该像Promise一样处理。因此console.log(response.json())
自然只需控制台记录一个JSON对象,而不是我的实际JSON。感谢@aray12的回答。直到我意识到.JSON()
返回了一个承诺,我才意识到答案
PS:添加此作为回答,因为我无法在评论中添加此内容。不确定您是否尝试过,但这是我尝试过的第一件事,但没有成功。我编辑了您发送的链接,它完全按照预期工作。我实际上得到了一个空的JSON。我已经更新了相同的babeljs试用版。您不能只更新babeljs。它存储了源代码e在URL中。因此,原始帖子中的链接仍然指向完全相同的代码。尝试单击我在上面提供的链接。这是一个babeljs链接,可以在不处理流的情况下工作。您在哪个浏览器中执行此操作?还不是所有浏览器都内置了fetch
。您应该包括,这也需要承诺填充
。我现在正在使用chrome版本50.0.2661.94(64位)。