我有一些我想在页面上运行的代码。我的问题是我不希望它在任何一点上运行多次。它可以运行多次,但只是在其自身的另一个实例正在运行时。我正在使用jQuery并加载ajax内容。
我只需要一些东西阻止用户点击时间,建立问题并ping我的服务器堆。
这可能吗?
感谢。
答案 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请求正在运行的时候禁用了你的控件,它将更加用户友好。
通过这种方式,您不仅可以避免群发点击,而且用户也会知道杀死鼠标没有意义。