【问题标题】:Implicitly checking if axios call was success隐式检查 axios 调用是否成功
【发布时间】:2020-08-23 06:58:34
【问题描述】:

想象一下我的应用:

   let res = await axios({
        url: 'https://test.com/posts/1',
        method: 'get',
        timeout: 8000,
        headers: {
            'Content-Type': 'application/json',
        }
    })

    console.log("Success");
 

所以你可以看到我没有手动检查上面调用的响应状态码,而是假设如果"Success"在控制台上打印,则上面的调用是成功的,否则会出现异常或承诺拒绝和JS 直到 console.log 才会继续。

这是安全的假设吗?

【问题讨论】:

    标签: javascript axios


    【解决方案1】:

    默认情况下,axios 对非 2xx 响应会抛出错误,因此您可以假设在您的 console.log 处成功。您当然希望捕获错误并进行适当处理,以免遇到未处理的拒绝问题。

    如果你不想要这种行为,你可以使用validateStatus config option

    【讨论】:

    • 我明白了,但是如果不需要进一步的错误处理(例如,我有时使用 axios 拦截器报告错误),我也可以这样,没有try - 并假设成功记录...
    【解决方案2】:

    使用if (response.status == 200) 检查响应。但是对于非 2XX 响应,axios 会自动处理。

    axios.get(url, config)
    .then(function(res) {
      // successful response flow
    })
    .catch(function(error) {
      // error response flow
    })
    

    【讨论】:

      猜你喜欢
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多