在 $.each() 之外创建函数返回值,并使用标志变量来确定是否单击了按钮。我一般使用“窗口”来声明全局函数和变量。
var panicButtonClicked = false;
window.panicButtonClicked = panicButtonClicked;
var timeouts = [];
window.timeouts = timeouts;
$.each(someArray, function(index, value){
if( !panicButtonClicked )
{
timeouts.push( setTimeout(function(){
console.log(index);
}, 5000*index) );
}
});
$('#panic-button').click(function(){
//the code that should stop the looping
panicButtonClicked = true;
$.each(timeouts, function (_, id) {
clearTimeout(id);
});
});
我在我的编辑中包含了 Jonathan Lonowski 给出的 for 循环。这个想法是相似的,除了你需要一个额外的变量来防止你的初始循环执行。这能解决你的问题吗?