我一直在阅读 Promises 和 then/catch 语法。
This article非常全面,我以为我理解了:
fetch()
.then()
.catch()
这里,catch()
处理在 then()
中调用的代码中抛出的错误。
var p = fetch()
p.then()
p.catch()
这将正确捕获 fetch()
抛出的错误,并在 then()
内处理 fetch()
的正确响应。
为什么 axios 中的行为不同?
这里我发现的所有示例都使用第一种方法来捕获 axios()
调用引发的错误。结果是
axios(/* axios stuff */)
.then(successCallback)
.catch(errorCallback)
errorCallback 处理由 axios()
引发的 4xx 错误,以及由 successCallback
引发的任何运行时错误。或者我在这里遗漏了什么?有没有办法区分这两类错误?
请您参考如下方法:
Promise链接就像水流。如果任何前面 then 的第二个参数中没有处理程序,最后一个 catch 将捕获在它之前抛出的所有错误
如果您不希望 errorCallback
处理 successCallback
抛出的错误,您应该将 errorCallback 放入 then 的第二个参数。
axios(/* axios stuff */)
.then(successCallback, errorCallback)