前端判断网络状态并提示

在后台系统访问,有时候会遇到断网或者网络不好得时候,所以这里需求是在请求发送之前判断网络环境,如果断网给出提示,弱网超过一定时间提示请求超时

1、封装判断断网函数统一封装

这里使用得是window的一个属性navigator

复制代码
function checkConnectionStatus() {
  const networkType = window.navigator.onLine;
    if (!networkType) {
      // 网络速度慢,给出提示
      message({
        type: "error",
        message: "当前网络未连接,请检查网络!"
      });
      return false
    }
    return true
}
2、在请求封装的函数前先判断网络情况

如果断网直接提示,并不走请求逻辑

复制代码
/**
 * post方法,对应post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function post(url, params, isLoading = true) {
  // 在发送请求之前判断网络状态
  const flag = checkConnectionStatus()
  if(!flag) return
  if (isLoading == true) {
    var loadingInstance = Loading.service({
      lock: true,
      text: "加载中...",
      background: "rgba(255, 255, 255, 0.3)"
    });
  }
  return new Promise((resolve, reject) => {
    Axios.post(url, QS.stringify(params))
      .then(res => {
        if (loadingInstance) {
          setTimeout(() => {
            loadingInstance.close();
          }, 0);
        }
        resolve(res.data);
      })
      .catch(err => {
        if (loadingInstance) {
          setTimeout(() => {
            loadingInstance.close();
          }, 0);
        }        
        reject(err.data);
      });
  });
}
3、弱网情况下提示请求超时

这里需要在响应拦截器中做判断

3.1、设定超时时间
复制代码
// 设置请求超时
Axios.defaults.timeout = 20000;
3.2、拦截器判断
复制代码
Axios.interceptors.response.use(
···
// 服务器状态码不是成功的情况
  error => {
    if (error.message.includes("timeout")) {
      message({
        type: "error",
        message: "网络连接超时,请检查网络"
      });
      return Promise.reject(error.response);
    } else if (error.response.status) {
        // 其他错误,直接抛出错误提示
        default:
          break;
      }
      return Promise.reject(error.response);
    }
  }
)

这样子就可以啦,是不是很容易!!!

相关推荐
点心的游戏开发世界11 分钟前
GDScript 入门笔记:目录
开发语言·笔记·游戏引擎·godot
洋不写bug19 分钟前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
果果燕21 分钟前
实习笔记(六)主机按钮状态上报完整流程
开发语言·c++·php
平头哥技术团队1 小时前
Day 16 | 用 ul、ol、li 一个标签,把散资料收成有序的技能清单页
开发语言·前端·html·html5
是个西兰花1 小时前
网络基础1
linux·网络·c++·智能路由器
代码青铜z1 小时前
不会写代码做小程序,模板开发和AI 编程靠谱吗?创业前先看这 5 件事
前端
统计学小王子1 小时前
数学建模国赛倒计时 2 天 ——《统计模型精讲(广义线性模型 R 语言实例 + 分析)》
开发语言·数学建模·r语言
小傅哥1 小时前
Java + DDD,1:1 复刻 Deepseek Harness 项目
前端·后端·ai编程
此冬歌咏1 小时前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
积硅步致千里1 小时前
Word 里的 .wmf 其实是 EMF:一次 metafile 转 PNG 排障
前端·后端