Javascript清除后重新运行超时

Javascript reruning timeout after being cleared

我有一个带有参数的函数,它对这些参数进行一些操作,然后在一定超时后再次将它们发送给自己 现在我想清除这个超时,但在某些时候我想回忆一下那个用当前参数清除的超时来做到这一点?

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);
});

如果您想从 xy 值暂停的地方继续,您需要先存储它们。试试这个:

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)
    }
});

Working example

请注意,因为 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)
    }