Javascript 使用then/catch语法使用axios分别捕获4xx和代码错误

Javascript 使用then/catch语法使用axios分别捕获4xx和代码错误,javascript,axios,es6-promise,Javascript,Axios,Es6 Promise,我一直在阅读Promises和then/catch语法 非常全面,我认为我理解: fetch() .then() .catch() 在这里,catch处理在调用代码时抛出的错误 这将正确地捕获fetch抛出的错误,并在其中处理fetch的正确响应 为什么axios中的行为有所不同 在这里,我发现的所有示例都使用第一个方法捕获axios调用引发的错误。结果是 axios(/* axios stuff */) .then(successCallback) .catch(errorC

我一直在阅读Promises和then/catch语法

非常全面,我认为我理解:

fetch()
  .then()
  .catch()
在这里,catch处理在调用代码时抛出的错误

这将正确地捕获fetch抛出的错误,并在其中处理fetch的正确响应

为什么axios中的行为有所不同

在这里,我发现的所有示例都使用第一个方法捕获axios调用引发的错误。结果是

axios(/* axios stuff */)
  .then(successCallback)
  .catch(errorCallback)

errorCallback处理axios抛出的4xx错误,以及successCallback抛出的任何运行时错误。还是我在这里遗漏了什么?有没有办法区分这两类错误?

承诺链接就像水流一样。如果前面的第二个参数中没有处理程序,那么最后一个catch将捕获在它之前抛出的所有错误

如果您不希望errorCallback处理successCallback抛出的错误,那么应该将errorCallback放在then的第二个参数中

axios(/* axios stuff */)
  .then(successCallback, errorCallback)

谢谢,这就是我错过的!我不明白为什么这不是处理axios错误的首选方法。大多数示例使用.then和.catch。
axios(/* axios stuff */)
  .then(successCallback, errorCallback)