首页 > 解决方案 > 处理不发回请求(不捕获或不执行 .then)的 axios 的最佳实践是什么?

问题描述

我遇到过这样的情况,可能是因为连接不好,api没有响应,它跳过了.then和.catch。在这种情况下,错误处理的最佳做法是什么?如果根本没有回应,我想发出警报。

const getPic () => {
axios({
        url:   '/users/avatar',
        method: 'GET',
        headers: {
          'Authorization': "Bearer " + token,
        },
        data: {avatar: avatarUrl},
        responseType: 'blob',
      }).then((response) => {
        log(response);
        let blob = URL.createObjectURL(response.data)
        localStorage.setItem('image', blob);

}.catch(error) {
console.log(error)
}
}

标签: javascriptaxios

解决方案


你应该设置一个timeout在没有响应的情况下会导致 promise 被拒绝的值。

    axios({
      url:   '/users/avatar',
      method: 'GET',
      headers: {
        'Authorization': "Bearer " + token,
      },
      timeout: 1000,
      data: {avatar: avatarUrl},
      responseType: 'blob',
    })
    ~``

推荐阅读