2

我对 Promise 和 axios 有一些疑问。

在下面的 axios 示例中,我想知道它是如何定义来运行 catch 代码的。

它是基于响应http状态码吗?像400?

axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (response) {
    console.log(response);
  });

谢谢。

4

2 回答 2

2

我的理解是,如果发生任何类型的网络问题,或者如果服务器响应了错误代码,那么承诺就会被拒绝。

来自服务器的错误代码是客户端错误 (4XX) 或服务器错误 (5XX)。状态码定义

源代码的测试中,您可以看到维护者在拒绝承诺时正在测试什么。

于 2016-05-13T14:55:09.527 回答
1

您可以从 axios 的源代码中找到答案。

https://github.com/mzabriskie/axios/blob/62db26b58854f53beed0d9513b5cf18615c64a2d/lib/defaults.js#L73

axios 将检查validateStatus,如果status >= 200 && status < 300,它将解决。否则如果status < 200 && status >= 300,它将拒绝。

于 2017-08-14T05:14:31.903 回答