在Javascript中只执行一次函数,无论它被调用了多少次。 我写了下面的代码,但没有用。
var counter = 0;
if(n.data === YT.PlayerState.BUFFERING) {
setTimeout(function() {
if(counter===0) {
r.frontPlayer.seekTo(10);
counter++;
}}, 2000);
}
答案 0 :(得分:1)
尽量不要使用超时,他们会带来痛苦和痛苦。这是一个简单的例子,我使用jquery来附加事件,但函数独立于jquery。关键是使用对象(在这种情况下是匿名函数)来跟踪状态。
<button id="testButton">
test
</button>
$("#testButton").click(function() {
if (null == this.ran) {
console.log("do something");
this.ran = true;
}
})
答案 1 :(得分:0)
查看下划线或lodash的_.once
功能:
var fn = _.once(function() {
console.log('this will only run once');
});
或者自己写一下:
var fn = (function() {
var called = false;
var ret;
return function() {
if (called) return ret;
called = true;
// do stuff
// ..
ret = 'some return value';
return ret;
};
})();