如何在一定的时间间隔内重新执行一个函数?

时间:2014-09-22 13:23:21

标签: javascript google-chrome google-chrome-extension

我正在开发Chrome扩展程序,它需要在固定的时间段内运行一个功能,以便它可以与动态页面一起使用。

我使用过setInterval但它只执行了一次该函数,如果它被修改为以下内容:

function sumfunc(){
    document.body.innerHTML = dosumthin(document.body.innerHTML,false);
    setInterval(sumfunc(),1000);
}

填充调用堆栈时会使页面滞后,使页面看起来像是从未完成加载。

4 个答案:

答案 0 :(得分:2)

删除()

setTimeout(sumfunc,1000);

setTimeout()的第一个参数采用函数定义,而不是执行函数定义。

当您在sumfunc内执行sumfunc时,这将导致立即无限递归,这可能会导致堆栈溢出,如您所述。


因此请使用以下代码替换您的代码:

function sumfunc(){
    document.body.innerHTML = dosumthin(document.body.innerHTML,false);
    setTimeout(sumfunc,1000);
}

答案 1 :(得分:1)

只需使用setInterval

function sumfunc(){
 document.body.innerHTML = dosumthin(document.body.innerHTML,false);
}
window.setInterval(sumfunc,1000);

答案 2 :(得分:0)

页面滞后,因为每次超时开始时它都会再次调用超时。您必须在函数之外设置超时,如下所示:

setInterval(sumfunc,1000);
function sumfunc(){
    document.body.innerHTML = dosumthin(document.body.innerHTML,false);
}

答案 3 :(得分:0)

您需要一个间隔而不是超时。

function sumfunc(){
    document.body.innerHTML = dosumthin(document.body.innerHTML,false);
}

setInterval(sumfunc, 1000);