Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中临时禁用函数?_Javascript - Fatal编程技术网

如何在JavaScript中临时禁用函数?

如何在JavaScript中临时禁用函数?,javascript,Javascript,我正在尝试禁用JavaScript中的一个函数,以便每300ms只能调用一次 要做到这一点,我想最好的办法是这样做: var locked = (function () { var lock = null; return function () { if (lock != null) return false; lock = setTimeout(function () { lock = null;

我正在尝试禁用JavaScript中的一个函数,以便每300ms只能调用一次

要做到这一点,我想最好的办法是这样做:

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
则不是
!=空