我一直在阅读 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) 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!