vue项目中flag的作用

一、项目背景

短信发送列表页面,由三部分组成,搜索条件,列表,页码。因为当前列表是大数据来源数据,数据多达70亿数据,所以接口请求时间在一分钟作用,每次请求一百条数据

1.大数据接口请求优化(5S请求一次)

res.data中有个一个jobId,请求带上jobId就会继续当前的查询,如果想取消当前的查询,请求参数中带上一个oldJobId参数,就是上一个查询的jobId

 dataTimes(){
后端接口(参数).then(res => {
 if (resp.code == 200) {
   this.nowId=resp.data.jobId
     if(resp.data.status==1){
      //把请求的数据存到localStorage中的smsSendDate里面
         this.productList = [ ...this.productList,...resp.data.list]
         localStorage.setItem("smsSendDate", JSON.stringify(this.productList));
         this.nextContentPage=true //是否是第一个点击11页
         this.curClick=false //离开当前页面是否在请求
         //离开当前页面会保留上面两个flag
           if(this.productList.length ==100*this.searchParams.pageNum){
               this.page.totalCount = this.productList.length+1
               if(resp.data.list.length==0){
                 //   this.curProductList=[]
                  this.page.pageNum=this.page.pageNum-1
                   this.page.totalCount = this.productList.length
                }
          }else{
              this.page.totalCount = this.productList.length
          }
          this.getCurList()
         this.nowId=''
         this.searchParams.oldJobId=''
         this.renow()
     }else if(resp.data.status==2){
          this.productList = []
         this.page.totalCount = 0
          this.nowId=''
         this.searchParams.oldJobId=''
          this.renow()
         this.$message({ message: resp.data.statusMessage, type: 'warning' })
     }else{
         this.searchParams.jobId=resp.data.jobId
          this.getDate = setTimeout(this.dataTimes, 5000);
     }
 } else {
     this.$message.warning(resp.message)
 }
})
},

2.点击页码请求flag来判断

在这里插入图片描述

点击11页需要发起新的请求,每次请求会请求100条数据,请求参数是sendPageNum=1,以后++。而且当离开当前页面时候也要保持当前页面的状态,页面和请求接口

点击11页时候需要发起新的请求,我需要一个flag来判断是否发起请求,curClick:false(没有发起请求)来判断离开当前页的时候,是否在请求,还需要一个nextContentPage:true(没有点击11页)来判断是否第一次点击在11页,第一次点击请求,第二次点击就不发起新请求;

//初始时候curClick:false,离开当前页没有请求接口
//nextContentPage:true,没有点击请求新页

//截取对应当前页的数据
 getCurList(){
     this.curProductList=JSON.parse(localStorage.getItem("smsSendDate"));
     this.curProductList= this.curProductList.splice((this.page.pageNum-1)*this.page.pageSize,this.page.pageSize)
   },

//点击页面对应的逻辑
 getPageChange(){
	if(this.curClick){ //curClick这个falg是判断离开当前页面是否在请求状态,true是请求状态
	         if((this.page.pageSize*this.page.pageNum)>this.productList.length){ //点击十一页(1*11>101)
	         this.curProductList=[[]] //当前页数据是【】
	         this.nextContentPage=false //说明11页已经在请求了
	         }else {
	         //点击第十页,需要在100条数据中截取
	             this.nextContentPage=false
	             if(this.productList){
	             this. getCurList() //截取对应当前页的数据
	             }
	         }
	     }else{
	         this.curClick=false
	         if((this.page.pageSize*this.page.pageNum)>100*this.sendPageNum && this.nextContentPage){
	         //点击了11页,nextContentPage=false当前页已经在请求数据了
	                 this.nextContentPage=false//存到localStorage
	                 this.curProductList=[[]]
	                 this.sendPageNum++
	                 this.getDateFun()//请求列表的接口
	             }else {
	             this.getCurList()//截取对应当前页数据
	             }
	     
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值