问题:项目有一个批量操作的功能,一个树表格绑定的操作,因为接口不支持批量,只能通过前端来循环处理一组一组的请求来处理,又因为设计时表格数据量最大能到几百条,多以就会出现全局设置的时间不够而让一些接口处理超时。
在这里插入图片描述

全局中的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
  })
}

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐