js只执行1次的函数示例
在我们日常开发的时候,经常会碰到一种这样的情况:想让某个函数只执行一次,特别是在一些循环或定时执行的时候。
废话不多说,直接上代码:
functionrunOnce(fn,context){//控制让函数只触发一次
returnfunction(){
try{
fn.apply(context||this,arguments);
}
catch(e){
console.error(e);//一般可以注释掉这行
}
finally{
fn=null;
}
}
}
//Usage1:
vara=0;
varcanOnlyFireOnce=runOnce(function(){
a++;
console.log(a);
});
canOnlyFireOnce();//1
canOnlyFireOnce();//nothing
canOnlyFireOnce();//nothing
//Usage2:
varname="张三";
varcanOnlyFireOnce=runOnce(function(){
console.log("你好"+this.name);
});
canOnlyFireOnce();//你好张三
canOnlyFireOnce();//nothing
//Usage3:
varobj={name:"天涯孤雁",age:24};
varcanOnlyFireOnce=runOnce(function(){
console.log("你好"+this.name);
},obj);
canOnlyFireOnce();//你好天涯孤雁
canOnlyFireOnce();//nothing
因为返回函数执行一次后,fn=null将其设置未null,所以后面就不会执行了。再贴一个网上别人分享的代码,道理一样的:
functiononce(fn,context){
varresult;
returnfunction(){
if(fn){
result=fn.apply(context||this,arguments);
fn=null;
}
returnresult;
};
}
//Usage
varcanOnlyFireOnce=once(function(){
console.log('Fired!');
});
canOnlyFireOnce();//"Fired!"
canOnlyFireOnce();//nothing
以上就是为大家整理让javascript只执行一次的函数示例,有需要的可以参考。