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

时间:2018-03-27 10:27:43

标签: javascript axios es6-promise

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

This article非常全面,我认为我明白了:

fetch()
  .then()
  .catch()

此处,catch()处理在then()内调用的代码中抛出的错误。

var p = fetch()
p.then()
p.catch()

这样可以正确捕捉fetch()引发的错误,并在fetch()内处理then()的正确回复。

为什么axios中的行为不同?

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

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

errorCallback处理axios()引发的4xx错误,但也处理successCallback引发的任何运行时错误。或者我在这里遗漏了什么?有没有办法将这两类错误分开?

1 个答案:

答案 0 :(得分:1)

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

如果您不希望errorCallback处理successCallback引发的错误,则应将errorCallback置于当时的第二个参数中。

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