axios中的超时问题(单独超时,全局超时)
axios中的超时问题处理
·
问题:项目有一个批量操作的功能,一个树表格绑定的操作,因为接口不支持批量,只能通过前端来循环处理一组一组的请求来处理,又因为设计时表格数据量最大能到几百条,多以就会出现全局设置的时间不够而让一些接口处理超时。
全局中的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
})
}
更多推荐
已为社区贡献1条内容
所有评论(0)