【Vue】 axios同步执行多个请求
问题
项目中遇到一个需求,在填写商品的时候,选择商品分类后,加载出商品分类的扩展属性。

这个扩展属性有可能是自定义的数据字典里的单选/多远。
要用第一个axios查询扩展属性,第二个axios 从第一个axios中获得的code值去查询 数据字典。
解决思路
我是net后端开发,之前没有接触过Vue,也没用过axios,以前使用ajax是 直接加async:false属性就能同步执行。
在axios中没有这个属性,经过一番查找,发现可以使用ES8新特性 async/await 解决,类似于c#的异步,用法差不多。
具体的用法是 在需要实现同步的方法前面+async 使用方法的时候前面+ await。
然而我发现这样写第一个axios async是失效的,如下图所示,百思不得其解。
询问前端大佬才发现这个函数是一个匿名函数,真正需要等待的是then后面的函数,async需要加在then后面。修改后,问题解决。
示例代码
第一个axios:
// async callApiWithPost('/Owner_Manage/Goods_Extend/GetAllExtendBySortIds', this.groupIds).then((resJson) => {
callApiWithPost('/Owner_Manage/Goods_Extend/GetAllExtendBySortIds', this.groupIds).then(async(resJson) => {
if (resJson.Data !== null && resJson.Data.length > 0) {
for (var index = 0; index < resJson.Data.length; index++) {
let codeList = []
// 如果扩展属性 Type = 4 || 5 ,则执行同步axios方法,查找该扩展属性的字典项,加载到tableData中
if (resJson.Data[index].Type === 4 || resJson.Data[index].Type === 5) {
codeList = await this.$options.methods.getCodeList(resJson.Data[index].Code)
}
this.$refs.tableValue.tableData.push({
ExtendId: resJson.Data[index].Id,
Name: resJson.Data[index].Name,
Type: resJson.Data[index].Type,
codeList: codeList
})
}
}
}).catch((e) => {
console.log('获取分类数据失败')
})
第二个axios:
async getCodeList(code) {
const codeList = []
await callApiWithPost('/BaseInfo_Manage/Base_Code/GetCodeListByType', { id: code.trim() })
.then((resJson) => {
if (!resJson.Data || Object.keys(resJson.Data).length === 0) {
this.$message.error('未查询到数据或数据为空')
} else {
for (var m = 0; m < resJson.Data.length; m++) {
codeList.push({ id: resJson.Data[m].Id, name: resJson.Data[m].Name })
}
}
}).catch((e) => {
console.log('获取字典项数据失败')
})
return codeList
},
【Vue】 axios同步执行多个请求的更多相关文章
- axios 同时执行多个请求
http://chuansong.me/n/394228451820 同时执行多个请求 axios.all([ axios.get('https://api.github.com/xxx/1'), a ...
- vue --- axios拦截器+form格式请求体
在vue2.x中使用CLI生成的模板有很大改变,需要自己手动在main.ts同级目录下新建interceptors.ts interceptors.ts import axios from 'axio ...
- Vue+axios的四种异步请求,参数的携带以及接收
Vue中axios发送GET, POST, DELETE, PUT四种异步请求,参数携带和接收问题 web.xml配置如下 1.GET请求 发送GET请求: <!--params是关键字,说明所 ...
- vue axios 取消上次请求
axios.defaults.timeout = 1000 * 5axios.defaults.baseURL = baseUrlvar CancelToken = axios.CancelToken ...
- vue axios配置 发起请求加载loading请求结束关闭loading
axios带有请求拦截器,避免在每个请求里面加loading重复操作,可以封装进去,在请求开始时加载loading层,请求结束关闭,loading层用vux的loading加载 axios.js im ...
- vue.js学习之 跨域请求代理与axios传参
vue.js学习之 跨域请求代理与axios传参 一:跨域请求代理 1:打开config/index.js module.exports{ dev: { } } 在这里面找到proxyTable{}, ...
- 细说vue axios登录请求拦截器
当我们在做接口请求时,比如判断登录超时时候,通常是接口返回一个特定的错误码,那如果我们每个接口都去判断一个耗时耗力,这个时候我们可以用拦截器去进行统一的http请求拦截. 1.安装配置axios cn ...
- Vue+axios(interceptors) 实现http拦截 + router路由拦截 (双拦截)+ 请求自带loading效果
axios interceptors 拦截器 //interceptors.js // vue axios配置 发起请求加载loading请求结束关闭loading // http request 请 ...
- vue/axios请求拦截
import axios from 'axios';import { Message } from 'element-ui';import Cookies from 'js-cookie';impor ...
随机推荐
- JS仿贪吃蛇:一串跟着鼠标的Div
贪吃蛇是一款80后.90后比较熟悉的经典游戏,下面通过简单的JS代码来实现低仿版贪吃蛇效果:随着鼠标的移动,在页面中呈现所有Div块跟随鼠标依次移动,效果如下图所示. <!DOCTYPE htm ...
- 字符串匹配算法之Sunday算法(转)
字符串匹配算法之Sunday算法 背景 我们第一次接触字符串匹配,想到的肯定是直接用2个循环来遍历,这样代码虽然简单,但时间复杂度却是Ω(m*n),也就是达到了字符串匹配效率的下限.于是后来人经过研究 ...
- binary hacks读数笔记(ld 链接讲解 一)
首先我们先看两段代码: a.c extern int shared; int main(){ int a=100; swap(&a,&shared); } b.c int shared ...
- 在一个递增数组的rotate变换中找target
Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some pivot u ...
- 利用Vmware workstation安装MS-DOS使用Turbo C 2.0
首先上各种软件的链接 链接:https://pan.baidu.com/s/1HfTDexiJSpioUnzKddUIyA 提取码:khtu 这个链接是压缩后的 链接:https://pan.baid ...
- 从 3.1 到 5.0 —— OpenReservation 更新记
OpenReservation 从 asp.net core 3.1 到 5.0 Intro OpenReservation 是一个开源的预约系统,最初的版本是我们学校的活动室预约系统,现在正逐步变成 ...
- pikachs 渗透测试1-环境及暴力破解
一.安装 PhpStudy20180211,默认安装 1.mysql默认密码是root,因为在虚拟机,保留不动 2.解压pikachs 到 C:\phpStudy\PHPTutorial\WWW\pi ...
- 图像分割必备知识点 | Dice损失 理论+代码
本文包含代码案例和讲解,建议收藏,也顺便点个赞吧.欢迎各路朋友爱好者加我的微信讨论问题:cyx645016617. 在很多关于医学图像分割的竞赛.论文和项目中,发现 Dice 系数(Dice coef ...
- 巧妙使用MindManager图像功能,能够让你的思维导图更精彩
MindManager是一款多功能思维导图工具软件,有其他软件无法媲美的项目管理和商业规划高级功能.用户们制作思维导图时一定要注意图文并茂,单纯的文字会过于单调.所以接下来,小编就为大家详细介绍Min ...
- 几分钟看懂EasyRecovery数据恢复原理,比我想象的简单易懂得多
可能很多人知道使用数据恢复软件EasyRecovery可以恢复丢失的数据,但是却不知道它是什么原理.现在我们就以硬盘数据恢复为例,一起来了解下EasyRecovery数据恢复原理. 当硬盘数据丢失后, ...