Javascript 使用单击事件jQuery停止循环
我正在寻找一种通过点击事件(类似于紧急按钮)停止循环的方法。如果你点击按钮,它应该立即停止 //基本思想Javascript 使用单击事件jQuery停止循环,javascript,jquery,loops,each,Javascript,Jquery,Loops,Each,我正在寻找一种通过点击事件(类似于紧急按钮)停止循环的方法。如果你点击按钮,它应该立即停止 //基本思想 $.each(someArray, function(index, value){ setTimeout(function(){ console.log(index); },5000*index); }); $('#panic-button').click(function(){ //the code that should stop the
$.each(someArray, function(index, value){
setTimeout(function(){
console.log(index);
},5000*index);
});
$('#panic-button').click(function(){
//the code that should stop the looping
}):
你的答案很简单: 在
setTimeout
前面添加var$theTimeout=
并在中单击处理程序将其清除:clearTimeout($theTimeout)
你的答案很简单:
在setTimeout
前面添加var$theTimeout=
并在中单击处理程序将其清除:clearTimeout($theTimeout)
在$.each()之外创建函数返回值,并使用标志变量确定是否单击了按钮。我通常使用“窗口”声明全局函数和变量
我在编辑中加入了乔纳森·洛诺夫斯基给出的for循环。这个想法与此类似,只是需要一个额外的变量来阻止初始循环的执行。这是否解决了您的问题?在$.each()之外创建函数返回值,并使用标志变量确定是否单击了按钮。我通常使用“窗口”声明全局函数和变量
我在编辑中加入了乔纳森·洛诺夫斯基给出的for循环。这个想法与此类似,只是需要一个额外的变量来阻止初始循环的执行。这能解决您的问题吗?您不能中断$。循环启动后,每个循环都会使用单击处理程序。JavaScript执行是单线程的,因此,单击
处理程序充其量只能排队等待下一次线程空闲时——循环完成后
但是,由于计时器是异步执行的,您可以通过保留和清除它们的每个ID来取消它们:
var timeouts = [];
$.each(someArray, function(index, value){
timeouts.push(setTimeout(function(){
console.log(index);
},5000*index));
});
$('#panic-button').click(function(){
$.each(timeouts, function (_, id) {
clearTimeout(id);
});
timeouts = [];
}):
您不能中断$。循环启动后,每个循环都有一个单击处理程序。JavaScript执行是单线程的,因此,单击
处理程序充其量只能排队等待下一次线程空闲时——循环完成后
但是,由于计时器是异步执行的,您可以通过保留和清除它们的每个ID来取消它们:
var timeouts = [];
$.each(someArray, function(index, value){
timeouts.push(setTimeout(function(){
console.log(index);
},5000*index));
});
$('#panic-button').click(function(){
$.each(timeouts, function (_, id) {
clearTimeout(id);
});
timeouts = [];
}):
如果你想在后台有一个循环,你可以终止它,你必须模拟它,因为js基本上是单线程的,你的循环将被阻塞,直到它完成,然后你可以点击一个按钮
下面是一个例子,它使用settimeout来模拟一个可以通过单击取消的循环
如果你想在后台有一个循环,你可以终止它,你必须模拟它,因为js基本上是单线程的,你的循环将阻塞,直到它完成,然后你可以点击一个按钮
下面是一个例子,它使用settimeout来模拟一个可以通过单击取消的循环
这是行不通的,因为它位于一个结构中,所以创建了多个计时器。您需要将它们保存在一个数组中,并清除所有无法工作的计时器上的超时,因为它位于每个
构造中,所以创建了多个计时器。您需要将它们保存在一个数组中,并清除所有它们上的超时