如何在JavaScript中临时禁用函数?
我正在尝试禁用JavaScript中的一个函数,以便每300ms只能调用一次 要做到这一点,我想最好的办法是这样做:如何在JavaScript中临时禁用函数?,javascript,Javascript,我正在尝试禁用JavaScript中的一个函数,以便每300ms只能调用一次 要做到这一点,我想最好的办法是这样做: var locked = (function () { var lock = null; return function () { if (lock != null) return false; lock = setTimeout(function () { lock = null;
var locked = (function () {
var lock = null;
return function () {
if (lock != null)
return false;
lock = setTimeout(function () {
lock = null;
}, 300);
return true;
};
})();
function superImportantFunction() {
if(locked()) return;
}
并在其他类似功能中使用此锁:
var locked = (function () {
var lock = null;
return function () {
if (lock != null)
return false;
lock = setTimeout(function () {
lock = null;
}, 300);
return true;
};
})();
function superImportantFunction() {
if(locked()) return;
}
现在,由于某些原因,这不起作用。您是否有更好的建议,或者代码不起作用的原因
谢谢 它怎么不起作用?似乎对我有用。尽管您可能需要为不同的函数创建单独的锁,除非您希望它们共享锁。您需要反转您的返回值 编辑布尔值 在 您正在将lock设置为null,然后检查lock是否不等于null。也就是说,返回函数总是返回false 尝试将锁定声明移出Locked()函数:
var lock = null;
var locked = (function () {
return function () {
if (lock != null)
return false;
lock = setTimeout(function () {
lock = null;
}, 300);
return true;
};
})();
不,那是完全错误的。如果为
null
则不是!=空
。