打破javascript函数循环的方法

打破javascript函数循环的方法,javascript,Javascript,我想这个问题已经有一百万个答案了&我不知道用什么术语来表达这个问题。但是 看看这个: $('body')。在('click','testDiv',function()上{ console.log($(this)) 重复测试(1) }) 功能重复测试(n){ setTimeout(函数(){ $('.result').append(n+“hi”) 重复性试验(n); }, 3000); n++ } 我希望循环函数在再次单击testDiv时再次启动-因此只有一个循环迭代-不管它从哪个数字(n)开始

我想这个问题已经有一百万个答案了&我不知道用什么术语来表达这个问题。但是

看看这个:

$('body')。在('click','testDiv',function()上{
console.log($(this))
重复测试(1)
})
功能重复测试(n){
setTimeout(函数(){
$('.result').append(n+“hi
”) 重复性试验(n); }, 3000); n++ }
我希望循环函数在再次单击testDiv时再次启动-因此只有一个循环迭代-不管它从哪个数字(n)开始

请帮忙?
谢谢

您可以
清除超时
来取消现有的
设置超时
。比如:

var _handle;

$('body').on('click', '.testDiv', function(){
    clearTimeout(_handle);
    console.log($(this))
    repeatTest(1)
});

function repeatTest(n){
    _handle = window.setTimeout(function(){
        $('.result').append(n+" hi<br />")
        repeatTest(n);
    }, 3000);
    n++;
}
var\u句柄;
$('body')。在('click','testDiv',function()上{
clearTimeout(_句柄);
console.log($(this))
重复测试(1)
});
功能重复测试(n){
_handle=window.setTimeout(函数(){
$('.result').append(n+“hi
”) 重复性试验(n); }, 3000); n++; }
您可以
清除超时
取消现有的
设置超时
。比如:

var _handle;

$('body').on('click', '.testDiv', function(){
    clearTimeout(_handle);
    console.log($(this))
    repeatTest(1)
});

function repeatTest(n){
    _handle = window.setTimeout(function(){
        $('.result').append(n+" hi<br />")
        repeatTest(n);
    }, 3000);
    n++;
}
var\u句柄;
$('body')。在('click','testDiv',function()上{
clearTimeout(_句柄);
console.log($(this))
重复测试(1)
});
功能重复测试(n){
_handle=window.setTimeout(函数(){
$('.result').append(n+“hi
”) 重复性试验(n); }, 3000); n++; }
查找
clearTimeout
。查找
clearTimeout
。也许我应该说清楚,我在一个jQuery AJAX循环中,它有一个超时选项。我猜clearTimeout方法在这种情况下不会有帮助。有什么建议吗?Thanks@tozjerimiah你应该澄清你的问题。@tozjerimiah是的,我不太清楚你的意思
clearTimeout
将杀死现有的
setTimeout
,这样它就不会再次触发。如果您能在问题中提供一个更接近实际场景的示例(包括AJAX内容),这可能会让问题更清楚。感谢您的帮助,当我遇到此场景时,我将使用您的建议。我将开始一个新的线程,因为我已经完成了这个任务。也许我应该说清楚,我在一个jQueryAjax循环中,它有一个超时选项。我猜clearTimeout方法在这种情况下不会有帮助。有什么建议吗?Thanks@tozjerimiah你应该澄清你的问题。@tozjerimiah是的,我不太清楚你的意思
clearTimeout
将杀死现有的
setTimeout
,这样它就不会再次触发。如果您能在问题中提供一个更接近实际场景的示例(包括AJAX内容),这可能会让问题更清楚。感谢您的帮助,当我遇到此场景时,我将使用您的建议。我要开始一个新的线程,因为我已经把这一个球了。