Javascript 使用fetch()Webapi

Javascript 使用fetch()Webapi,javascript,json,http,get,fetch,Javascript,Json,Http,Get,Fetch,我试图了解浏览器的原生webapifetch()api是如何工作的。到目前为止,我有这个:它工作得很好。但我不明白的是,为什么我必须将流式字符串转换为JSON?我不知道为什么有人甚至需要通过RESTAPI将JSON作为字符串流式传输?我很确定我在这里遗漏了一些东西,但我不确定应该如何告诉fetch()以JSON而不是ReadableByteStream的形式获取响应,我必须将其转换为字符串并解析为JSON 我的问题是, 为什么这里要流式传输字符串 我如何告诉fetch()以文本或json的形式获

我试图了解浏览器的原生webapi
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位)。