详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
(编辑:jimmy 日期: 2024/11/5 浏览:3 次 )
"color: #ff0000">封装使用
建议拆分三个文件
"htmlcode">
'use strict'; import axios from 'axios'; // 自动识别接口使用开发环境地址(开发环境地址做了 proxyTable 代理,故设置为空)或线上地址 axios.defaults.baseURL = process.env.NODE_ENV === 'production' "htmlcode">import Api from './api'; export async function getBlog(reqData) { let res = await Api.fetchBlog(reqData); return res; }, export async function addBlog (reqData) { let res = await Api.addBlog(reqData); return res; }, export async function updateBlog (reqData) { let res = await Api.updateBlog(reqData); return res; }, export async function deleteBlogCover (id, reqData) { let res = await Api.deleteBlogCover(id, reqData); return res; },页面调用
接下来就可以愉快地在页面调用了
import { getBlog } from '@/service' export default { data() { return { tableData: [], pageIndex: 1, pageSize: 9 } }, created() { this.getList(); }, methods: { async getList() { let { result } = await getBlog({ pageIndex: this.pageIndex, pageSize: this.pageSize }); this.tableData = result.data; }, }axios 执行多个并发请求
async getList() { let resArr = [] for (let val of this.arrId) { // push 请求 resArr.push(queryPropertyValue({ id: val })) } this.tableData = [] Promise.all(resArr).then(res => { for (let val of res) { let vals = val.result.propertyValues // 每个请求的结果 push 到 tableData vals.forEach(item => this.tableData.push(item)) } }) },或者直接在 axios 写 promise all
上一篇:vue 点击展开显示更多(点击收起部分隐藏)// 根据 id 获取某一条商品数据 let getDetail = (id)=>{ return axios.get(`/detail"htmlcode">axios#request(config) axios#get(url [,config]) axios#delete(url [,config]) axios#head(url [,config]) axios#post(url [,data [,config]]) axios#put(url [,data [,config]]) axios#patch(url [,data [,config]])"color: #ff0000">axios 拦截特定请求
业务上经常出现这个问题,需要拦截某些特定请求,在该特定请求,页面采取或不采取什么变化
研究 axios 的 request 统一拦截方法:
axios.interceptors.request.use(function (config) {})
参数 config 如下:
可以发现 config.url 就是请求的接口的地址,那么 “/” 最后的 getClassify 就是该请求的方法,就可以通过取出该字符串来判断某些特定请求,从而做出怎样的变化
axios.interceptors.request.use(config => { // 判断请求是否是 getClassify,如果是 getClassify,不加载 LoadingBar let url = config.url; if (url.split('/').pop() === 'getClassify') { flag = false; } else { iView.LoadingBar.start(); flag = true; } return config; }, error => { console.log(error); return Promise.reject(error); });如何判断所有请求加载完毕
let reqNum = 0 axios.interceptors.request.use(function (config) { // 在请求发出之前进行一些操作,每次发出请求就 reqNum++ reqNum++ _bus.$emit('showloading') return config } axios.interceptors.response.use(response => { // 接受请求后 reqNum--,判断请求所有请求是否完成 reqNum-- if (reqNum <= 0) { _bus.$emit('closeLoading') } else { _bus.$emit('showloading') } })axios 的 post 请求 相关问题
"external nofollow" href="https://ainyi.com/27">https://ainyi.com/27
"htmlcode">saveNormalAds (reqData) { return Ax.post('/index.php"color: #ff0000">总结
以上所述是小编给大家介绍的详解axios中封装使用、拦截特定请求、判断所有请求加载完毕),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
下一篇:关于vue状态过渡transition不起作用的原因解决
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?