你怎么得到一个javascript函数只在任何一点运行一个实例?

时间:2009-08-22 10:00:47

标签: javascript jquery

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

我只需要一些东西阻止用户点击时间,建立问题并ping我的服务器堆。

这可能吗?

感谢。

3 个答案:

答案 0 :(得分:10)

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

isRunning = false;

function whatever() {

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

question看起来有点相关。

重新编辑:还值得注意的是,无论你在这里放置什么javascript解决方案以避免一连串的请求,都应该在服务器端另外考虑。

答案 1 :(得分:2)

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

var running = true;

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

答案 2 :(得分:1)

我认为如果你在ajax请求正在运行的时候禁用了你的控件,它将更加用户友好。

通过这种方式,您不仅可以避免群发点击,而且用户也会知道杀死鼠标没有意义。