首页 > 其他分享 >封装$tryCatch方法(axios请求方法),避免写重复代码

封装$tryCatch方法(axios请求方法),避免写重复代码

时间:2023-07-04 14:34:14浏览次数:52  
标签:axios 封装 relevant res blog loading tryCatch data

封装$tryCatch方法(axios请求方法),避免写重复代码:https://blog.csdn.net/qq_41995320/article/details/122621498?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122621498-blog-109624790.235%5Ev38%5Epc_relevant_default_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122621498-blog-109624790.235%5Ev38%5Epc_relevant_default_base&utm_relevant_index=2

 

大家平时写axios请求的时候,重复代码快写吐了吧,类似下面这种。

 

下面是我封装的$tryCatch方法,可以自动抛出错误提示,自动加载loading。

import Vue from "vue";
// func 请求方法 | data 请求参数 | target 区域显示dom | useSuccMessage 使用成功提示
export function tryCatch(func, data, target, useSuccMessage = true) {
return new Promise(async (resolve, reject) => {
const loading = Vue.prototype.$loading({
lock: true,
target // 设置加载动画区域
})
try {
let res = await func(data)
if (res && res.header.returnCode === "0") {
if (useSuccMessage) {
Vue.prototype.$message({
message: res.header.msg,
type: "success",
});
}
resolve(res)
} else if (res.header.returnCode === "1") {
Vue.prototype.$message.error(res.header.msg);
reject(res)
}
} catch (err) {
loading.close()
reject(err)
} finally {
loading.close()
}
})
}
用之前在main.js中全局配置一下,这样在组件中就可以通过this.$tryCatch调用。

// tryCatch通用方法引入,全局配置
import { tryCatch } from '@/assets/js/ex-common.js'
Vue.prototype.$tryCatch = tryCatch;
用法如下:

methods: {
async handleSearch() {
let data = this.$refs.search.ruleForm;
try {
let res = await this.$tryCatch(findPage, data, this.$refs.smallTable.$el, false)
this.tableData = res.data.records;
this.total = res.data.total;
this.current = res.data.current
this.pages = res.data.pages
} catch (err) {
console.log(err)
}
}
},

解释:

 

注意:handleSearch方法调用的时候只能在mounted中调用,因为mounted钩子中才能获取到loading动画需要的dom元素。
————————————————
版权声明:本文为CSDN博主「jack-94」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41995320/article/details/122621498

标签:axios,封装,relevant,res,blog,loading,tryCatch,data
From: https://www.cnblogs.com/bydzhangxiaowei/p/17525666.html

相关文章

  • springboot封装redission的分布式锁逻辑为注解
    场景概述使用分布式锁的时候,每次都需要使用trycatch处理方法中的逻辑。考虑是否可以这块逻辑抽离出来。实现在自定义的注解中添加属性来设置锁的等待时间、租赁时间和时间单位importjava.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTI......
  • ois七层模型与数据封装过程
    一,ois七层模型一,ois七层模型1为什么要分层2七层模型3七层总结二,协议,端口,的作用2.1协议作用2.2tcp/udp的区别2.3ARP协议的作用2.4客户端与服务端的作用2.5icmp与ping的区别2.6FTP协议端口2.7端口号的作用三,数据封装过程3.1数据封装过程 1为什么要分层1.1很多不同的厂......
  • 网络、模型与封装
    一、计算机网络1.1、什么是网络将不同设备连接在一起相互分享信息,即称为网络,不同规模,不同称呼。1.2网络的目的实现资源共享。二、计算机网络参考模型2.1、为什么分层简单的发一条消息会涉及的多个功能,为便于我们人类理解则需要“分层”来给予明确的功能划分,逐一剖析。2.......
  • Axios-请求方式别名
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><scriptsrc="js/axios-0.18.0.js"></script><......
  • 前端封装方法 去掉值为空i字符串的字段
    1.import_from'lodash'2.functionclearEmptyParam(config){ ['data','params'].forEach(item=>{  if(config[item]){   constkeys=Object.keys(config[item])   if(keys.length){    keys.forEach(key=......
  • C# 学习笔记 - 封装
    封装封装可以阻止用户以开发者不希望的方式操纵对象。所有类和结构体的默认受保护级别为“private”,这意味着外部用户无法访问类和结构体的内部成员。受保护级别(ProtectionLevels)Privateprivate级别的成员只能在类的内部被访问,其他类的方法,甚至private级别成员所在类的衍......
  • 7. 统一结果封装
    1.表现层与前端数据传输协议定义SSM整合以及功能模块开发完成后,接下来,我们在上述案例的基础上分析下有哪些问题需要我们去解决下。首先第一个问题是:在Controller层增删改返回给前端的是boolean类型数据​​在Controller层查询单个返回给前端的是对象​​在C......
  • 开心档之C++ 数据封装
    C++数据封装所有的C++程序都有以下两个基本要素:**程序语句(代码):**这是程序中执行动作的部分,它们被称为函数。**程序数据:**数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确......
  • 封装,重写
    封装,重写封装该露的露,该藏的藏我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住......
  • Vue封装组件并发布到npm仓库
    前言使用Vue框架进行开发,组件封装是一个很常规的操作。一个封装好的组件可以在项目的任意地方使用,甚至我们可以直接从npm仓库下载别人封装好的组件来进行使用,比如iview、element-ui这一类的组件库。但是每个公司的业务场景可能不同,开发人员还是得必须封装自己得组件,如果换了一个......