vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue项目请求超时

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);
      });
  });
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文