首页 > 解决方案 > axios超时后得到通知

问题描述

我有一个使用 axios 的 API 调用。超时设置为 2500 毫秒。我想要的是 axios 在超时后返回一个值,这样我就可以通知用户请求由于某些服务器或网络错误而中止。

我如何初始化超时

const instance = axios.create();
instance.defaults.timeout = 2500;

以下是超时后应返回值的函数

_post(url, body, token) {
        return new Promise((resolve, reject) => {
            instance
                .post(url, body, {headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    }})
                .then(data => {
                    resolve(data);
                })
                .catch(error => {
                    reject(error);
                });
        });
    }

谢谢!

标签: javascripttypescriptecmascript-6axioses6-promise

解决方案


Axios 错误由codeproperty标识。

这是超时情况下的ECONNABORTED代码

上面的代码使用了 Promise 构造反模式。已经有一个promise,不需要创建一个新的:

_post(url, body, token) {
    return instance
        .post(url, body, {headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            }})
        .catch(error => {
            if (error.code === 'ECONNABORTED')
                return 'timeout';
            else
                throw error;
        });
}

推荐阅读