axios 请求超时,设置重新请求的完美解决方法 (2)

//在 main.js 设置全局的请求次数,请求的间隙 axios.defaults.retry = 4; axios.defaults.retryDelay = 1000; axios.interceptors.response.use(undefined, function axiosRetryInterceptor(err) { var config = err.config; // If config does not exist or the retry option is not set, reject if(!config || !config.retry) return Promise.reject(err); // Set the variable for keeping track of the retry count config.__retryCount = config.__retryCount || 0; // Check if we\'ve maxed out the total number of retries if(config.__retryCount >= config.retry) { // Reject with the error return Promise.reject(err); } // Increase the retry count config.__retryCount += 1; // Create new promise to handle exponential backoff var backoff = new Promise(function(resolve) { setTimeout(function() { resolve(); }, config.retryDelay || 1); }); // Return the promise in which recalls axios to retry the request return backoff.then(function() { return axios(config); }); });

其他的那个几十个.vue 页面的 this.$axios 的 get 和 post 的方法根本就不需要去修改它们的代码。

在这个过程中,谢谢 jooger 给予大量的技术支持,这是他的个人信息 https://github.com/jo0ger, 谢谢。

以下是我做的一个试验。。把 axios.defaults.retryDelay = 500, 请求 

axios 请求超时,设置重新请求的完美解决方法

如有更好的建议,请告诉我,谢谢。

github 源代码, 给星星的人都很美。

转载 https://www.v2ex.com/t/460436

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwswf.html