JSON.parse()与.上传.json()

Isf*_*aaq 5 javascript json fetch

我最近一直在使用fetch API和Promises,我遇到了.json().通常.json()返回与JSON.parse相同的输出.我用Google搜索了问题,结果指向了其他方向.

XHR和JSON.parse示例:

$('#xhr').click(function(){
  var XHR = new XMLHttpRequest();

  XHR.onreadystatechange = function(){
    if (XHR.status == 200 && XHR.readyState == 4) {
      $('#quote').text(JSON.parse(XHR.responseText)[0]);
    }
  };

  XHR.open("GET", url);
  XHR.send();
});
Run Code Online (Sandbox Code Playgroud)

使用Fetch API的示例:

$('#fetch').click(function(){
  fetch(url)
  .then(function(res){
    return res.json();
  })
  .then(function(quote){
    $('#quote').text(quote);
  })
  .catch(function(err){
    handleError(err);
  });
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释这些看似相似的概念之间的区别吗?谢谢

gue*_*314 9

Body.json()是异步的,并返回一个Promise解析为JavaScript对象的对象.JSON.parse()is synchronous可以解析字符串并更改生成的返回JavaScript对象.


And*_*ycw 6

“AJAX”与“回调”配合使用;'fetch' 与 'promises' 一起使用。

使用 JSON.parse() 解析 AJAX 的响应。使用 json() 解析 fetch 的响应。