Vue项目请求超时处理方式
作者:一捆铁树枝
这篇文章主要介绍了Vue项目请求超时处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Vue项目请求超时
现在网页项目大多采用前后端分离模式,这种模式优点有很多,但是也会带来不少问题
比如
请求后端接口时会受网络因素影响,导致请求超时;
这就需要我们在请求方法中设置拦截,对请求超时做处理;
我在项目中使用的axios封装方法
设置网络请超时拦截处理
import axios from "axios"; import { get } from "http"; import { Toast } from 'vant'; // api 路径 // const server = "https://operator-app.funenc.com"; const httpAxios = axios.create();//创建实例 let Config = { TIMEOUT: 6000,//设置超时时间为6秒 baseURL: { dev: window.BASEURL_01, prod: '' } }; // axios 配置 httpAxios.defaults.timeout = Config.TIMEOUT; httpAxios.interceptors.response.use( response => { return response; }, error => { if(error.message.includes('timeout')){ // 判断请求异常信息中是否含有超时timeout字符串 Toast('请求超时,请稍后再试') return Promise.reject(error); // reject这个错误信息 } Toast('网络连接失败,请稍后再试') return Promise.reject(error); }); export function fetch(url, method = "GET", params, query) { if (sessionStorage.app_token && sessionStorage.device_id) { httpAxios.defaults.headers["app-token"] = sessionStorage.app_token; } return new Promise((resolve, reject) => { httpAxios({ method: method, url: global["G_SERVER_URL"] + url, data: params, params: query }) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }); }); }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。