Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
610 views
in Technique[技术] by (71.8m points)

vue 如何在循环请求接口中,当请求的方法操作彻底结束后再循下一个

之前问了一个循环请求接口的问题,循环请求接口是成功的,

oneKeyGet(){
  let queue=this.dataTable.forEach(item=>{
    return new Promise(resolve=>{
      this.goToDetail(item).then(res=>{
        resolve(res)
      // this.goOn(item);
      })
    })
  })
}

但是这是一个动态的表头,所以当数据被请求到之后,得将表头拎出来,并且是将搜索到的结果拼在相同name之后,这种循环套循环,数据量(目前是4万条)一大页面就卡死了,之后数据量会更大

goOn(value){
      this.detailInfo=[];
      for(var i=0,len=this.detail.length;i<len;i++){
        var timerList=this.detail[i].vos.split(",");
        var timerObj=[];
        for(var j=0;j<timerList.length;j++){
          var timerArr=timerList[j].split("-");
          if(timerArr.length==3 && timerArr[1]==""){
            timerArr[1]="-"+timerArr[2]
          }
          timerObj[timerArr[0]]=timerArr[1];
        }
        this.detailInfo.push(Object.assign({},this.detail[i],timerObj));
      }
      var lastOne="";
      this.newTable.forEach((item,index)=>{
        if(value.equipmentName==item.equipmentName){
          lastOne=index;
        }
      });
      this.newTable.splice(lastOne+1,0,this.detailInfo);
      this.newTable=this.newTable.flat(Infinity);
    },

所以想请教一下,如何在这个goOn方法彻底结束之后再继续oneKeyGet()里的promise循环下一个请求接口的操作


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
async oneKeyGet(){
    for(let i = 0; i < this.dataTable.length;i++) {
        let res = await this.goToDetail(this.dataTable[i]);
        this.goOn(res);

    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...