清除后 Javascript 重新运行超时

Javascript reruning timeout after being cleared

本文关键字:超时 重新运行 Javascript 清除      更新时间:2023-09-26

我有一个带有参数的函数,这些参数对这些参数执行一些操作,然后在一定超时的情况下将它们再次发送到自身现在我想清除此超时,但在某些时候我想回忆一下无论如何都使用其当前参数清除的超时来执行此操作?

var thread
$(document).ready(function(){
    f(0, 0)
    $('.pause').click(function(){
        clearTimeout(thread);
    });
    $('.resume').click(function(){
        thread; //want to rerun thread
    });
    f(x, y) {
        thread = setTimeout(function(){
            f(x + 1, y + 1);
        }, 1000)
    }
您只需

要在resume单击处理程序中再次调用f(0, 0)

$('.resume').click(function(){
    f(0, 0);
});

如果要从暂停x值和y值的位置继续,则需要先存储它们。试试这个:

var thread;
$(document).ready(function(){
    var publicX, publicY; 
    f(0, 0);
    $('.pause').click(function(){
        clearTimeout(thread);
    });
    $('.resume').click(function(){
        f(publicX, publicY);
    });
    function f(x, y) {
        publicX = x;
        publicY = y;            
        thread = setTimeout(function(){
            f(++publicX, ++publicY);
        }, 1000)
    }
});

工作示例

请注意,由于 publicXpublicY 变量现在位于所有处理程序的范围内,因此不再需要将它们作为 f() 函数的参数包含在内。我将它们保留在此示例中,以防您有其他需要使用它们的逻辑。

var thread;
var x = 0;
var y = 0;
$(document).ready(function(){
    f(x, y)
    $('.pause').click(function(){
        clearTimeout(thread);
    });
    $('.resume').click(function(){
        f(x,y); //want to rerun thread
    });
    f(x, y) {
        thread = setTimeout(function(){
            f(x + 1, y + 1);
        }, 1000)
    }