赞
踩
问题:项目有一个批量操作的功能,一个树表格绑定的操作,因为接口不支持批量,只能通过前端来循环处理一组一组的请求来处理,又因为设计时表格数据量最大能到几百条,多以就会出现全局设置的时间不够而让一些接口处理超时。
全局中的axios超时时间
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API,
// 全局超时
timeout: 15000
})
执行逻辑
let promiseList = [] for(var i of arrList){ if(i.children.length){ // 子集中的所有摄像机id let resourceIds = [] for(let j of i.children){ resourceIds.push(j.channelId) } let p = new Promise( (resolve, reject) => { let params = { // 树id sysNodeId: i.treeNodeId, resourceType: 0,//0是摄像机的类型 resourceIds: resourceIds,//摄像机id } sysCatalogRelation(params).then( res => { if (res.code == 200) { resolve(200) }else{ resolve(500) } }).catch( () => { resolve(500) }) }) promiseList.push(p) } } Promise.all(promiseList).then((res) => { console.log(res) if( res.includes(500) ){ this.$modal.msg( `部分操作成功` ) }else{ this.$modal.msgSuccess(this.$t('public.successfulTexts')) } this.sysNodeIdRelationList(this.sysNodeId) }).catch((err) => { console.log(err) })
在这一段时间内执行了大量的请求
(测试环境中的15秒够用,我本地则修改成了1000用来表现一下效果)
单独设置则只需要在封装的接口中设置好即可,它的优先级会比全局中设置的高
export function sysCatalogRelation(data) {
return request({
// 接口中的单独超时
timeout: 40000,
url: '/system/sysCatalogRelation',
method: 'post',
data: data
})
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。