1.需求:根据某一接口的字段进行判断是否进入轮询,当点击文件确认上传的时候,要等待文件上传成功之后再去调用轮询的接口
2.解决方式:轮询函数
//created 在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),property 和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始
// created可以根据需求来写
created(){
this.getTimeResh();//组件创建时开始轮询
}
beforeDestroy(){
clearTimeout(this.timer);//消除定时器,避免内存泄漏
this.timer=null;//将定时器设置为null,确保不再执行任何操作
},
//轮询函数
getTimeResh(){
let excuteFlag = null
// 请求判断是否轮询的接口
getTotalInfo().then((res)=>{
excuteFlag = res.data.data.excuteFlag
if(excuteFlag == true){
this.timer=setTimeout(this.getTimeResh,20000);//每20秒轮询一次
}else{
// 对需要刷新的接口进行刷新
this.getTotalInfo();
this.getTaskbaseinfo();
// 清除定时器
clearTimeout(this.timer);
this.timer = null
})
3.重点:当文件上传成功的时候才去调用轮询的接口,而不是跟调用文件的接口同一级别
这里是点击确认之后文件上传成功之后调接口
if (data.data.success){
this.fileLoading = false;
this.handclear();
this.$message.success('上传成功')
this.$emit("getTaskbaseinfo");
this.$emit('getTimeResh')//调用轮询