最新遇到项一个接口,这个接口要在后台运行1小时之久,如果前端重复请求那么后台就会重新计算,所以我想到了函数节流。
话不多说-上代码:
//method:为实际操作的业务代码,我这里是接口请求的操作
//delay:为间隔多长时间执行一次
<el-button type="primary" @click="againCheck">请求接口</el-button>
data() {
return {
//刚开始定义的时间
beginTime:0
};
},
//methods中
fnThrottle (method, delay) {
var that = this;
return function(){
var args = arguments;
var current = new Date().getTime();
//两次操作的间隔时间大于设定的值,则允许执行操作
if(current-that.beginTime>=delay){
method.apply(that,args);
//将当前时间保存
that.beginTime=current;
}
}
},
//点击请求接口按钮
againCheck(){
this.fnThrottle(this.handleAgainCheck,1000)()//小括号别忘了哦!!
},
//执行业务代码,我这里是接口请求
handleAgainCheck(){
console.log('节流');
}
大功告成!
快去尝试吧。