是否真的没有办法从失败的js获取请求中获取响应主体?

gra*_*hay 10 javascript fetch-api

如果请求失败,新的js fetch API将失败(400):

fetch(uri).catch(function(err) {
   console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,真的没有办法获得响应机构吗?例如,检查错误代码.

编辑:我创建了一个js小提琴:https://jsfiddle.net/4x4xLwqo/,它调用这个mockbin端点:http://mockbin.org/bin/d87acbb0-526e-4d66-aea4-b827d9c35031/view

编辑2:更新jsfiddle以使用更好的端点:https://jsfiddle.net/4x4xLwqo/2/

Bar*_*icz 10

fetchcatch如果遇到HTTP错误,则不会进入.你可以定期处理then.

来自MDN:

一个fetch()承诺将拒绝TypeError在遇到网络故障时,尽管这通常意味着权限问题或类似- 404不构成一个网络错误,例如.准确检查成功fetch()将包括检查承诺是否已解决,然后检查该Response.ok属性的值是否为true.

以及来自MDN的附带示例:

fetch('flowers.jpg').then(function(response) {
  if(response.ok) {
    response.blob().then(function(myBlob) {
      var objectURL = URL.createObjectURL(myBlob);
      myImage.src = objectURL;
    });
  } else {
    console.log('Network response was not ok.');
  }
})
.catch(function(error) {
  console.log('There has been a problem with your fetch operation: ' + error.message);
});
Run Code Online (Sandbox Code Playgroud)