【问题标题】:How do you get a javascript function to only be running one instance at any one point?你如何让一个javascript函数在任何时候只运行一个实例?
【发布时间】:2009-08-22 10:00:46
【问题描述】:

我想在页面上运行一些代码。我的问题是我不希望它在任何一点上运行不止一次。它可以运行多次,但不能在另一个自身实例运行时运行。我正在使用 jQuery 并加载 ajax 内容。

我只需要一些东西来防止用户点击数百次并建立队列和 ping 我的服务器堆。

这可能吗?

谢谢。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    如果它只是在不同区域调用的一个函数,听起来你只是想要某种基本的信号量测试,例如:

    isRunning = false;
    
    function whatever() {
    
       if (!isRunning) {
          isRunning = true;
          $.ajax(...., function() {
              isRunning = false;
          });
       }
    }
    

    这个question 看起来有点相关。

    重新编辑您的编辑:还值得注意的是,您在此处为避免大量请求而采用的任何 javascript 解决方案都应在服务器端另外考虑。

    【讨论】:

    • 我知道 DoS 攻击的影响。
    【解决方案2】:

    只保留一个变量来标记它是否正在运行:

    var running = true;
    
    ... complete: function() { running = false; }
    

    【讨论】:

      【解决方案3】:

      我认为,如果您在 ajax 请求正在进行时禁用控件会更加用户友好。

      这样不仅可以避免大量点击,而且用户也会知道杀死鼠标是没有意义的。

      【讨论】:

        猜你喜欢
        • 2013-12-08
        • 2012-06-30
        • 2023-03-05
        • 2018-09-12
        • 2014-12-28
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 2019-05-16
        相关资源
        最近更新 更多