原生js实现控制函数执行次数/频率
在开发中,遇到需求如下:当函数function fn(){//...}执行的次数超过设定值后,将执行另一个函数fn2。实现方式如下:
/**
* fn1限制次数的方法
* time限制方法的次数
* fn2超过次数后执行的方法
*/
function seTime(fn1,time,fn2){
return function(){
if(time--){
return fn1.apply(this, arguments);
}else{//次数已经用完
return fn2.apply(this, arguments);
console.log("函数调用次数已用完!");
}
}
}测试如下:
function a(str){
console.log(str);
}
function b(str){
console.log("a执行完了,现在执行的是b"+str);
}
var test = seTime(a,2,b);
test(1);
test(2);
test(3);最终输出结果为:
1
2
a执行完了,现在执行的是b3备注:以上代码同样适用于匿名函数。
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!