jQuery—防止异步函数同时运行多次
我有一个异步函数,由“onmouseover”触发,它向列表发送子节点请求并显示它们。将其设置为同步可防止出现这种情况,但据我所知,它需要异步才能在Chrome和IE中显示加载图标。问题是,如果在函数仍在执行时多次鼠标悬停,则会多次加载子对象。我遇到的问题是防止函数一次运行多次,以防止子节点被多次加载 提前谢谢 我的ajax调用(jQuery而不是$,因为我在noconflict模式下运行): 它不会“同时”运行;一个更好的词应该是“同时”。无论如何,只要设置一个标志:jQuery—防止异步函数同时运行多次,jquery,asynchronous,Jquery,Asynchronous,我有一个异步函数,由“onmouseover”触发,它向列表发送子节点请求并显示它们。将其设置为同步可防止出现这种情况,但据我所知,它需要异步才能在Chrome和IE中显示加载图标。问题是,如果在函数仍在执行时多次鼠标悬停,则会多次加载子对象。我遇到的问题是防止函数一次运行多次,以防止子节点被多次加载 提前谢谢 我的ajax调用(jQuery而不是$,因为我在noconflict模式下运行): 它不会“同时”运行;一个更好的词应该是“同时”。无论如何,只要设置一个标志: if (ifUlExis
if (ifUlExists.length === 0 && !$('body').data('loadingUl')) {
$('body').data('loadingUl', true);
// the rest of your code
}
使用“body”元素数据只是无数方法之一,但我有点喜欢它,因为jQuery使$('body')
变得非常便宜。当然,您可以将旗帜放在任何地方。旗帜是一种选择:
var running = false;
$(selector).mouseover(function() {
if(!running) {
running = true;
callAsyncFunction();
}
});
在Ajax请求的回调中,再次设置running=false
如果您想对多个元素执行此操作,可以将该元素的功能用作。非常感谢!!!绝对是我花了好几个小时想弄明白的。
var running = false;
$(selector).mouseover(function() {
if(!running) {
running = true;
callAsyncFunction();
}
});