2

我有一个我想立即调用的函数,然后使用 setInterval 每十秒更新一次。

目前我正在使用类似的东西

myFunction();
setInterval(function(){
 myFunction();
}, 10000);

有一个更好的方法吗?我觉得应该有一种方法可以告诉 setInterval 随叫随到,但我似乎找不到任何东西。

4

3 回答 3

4

这并没有任何“更好”,但它用更少的行做你想要的:

myFunction();
setInterval(myFunction, 10000);
于 2013-10-07T20:06:04.033 回答
2

如果你从函数内部返回函数,你可以使用这样的小技巧:

function foo() {
    alert('hi');
    return foo;
}

// no need to call it before setting the interval
window.setInterval( foo() , 3000 );

它立即执行,并且由于函数返回自身,因此它继续运行。

jsFiddle 示例

于 2013-10-07T20:11:14.007 回答
1

另一种方法是修改你的函数以使用 setTimeout 调用自身,然后你可以用一行来开始整个事情:

function myFunction() {
    // do stuff
    setTimeout(myFunction, 10000);
}
myFunction();

正如评论中所指出的,这与 using 不完全相同setInterval(根据函数中的代码执行时间长短,可能会丢弃一些函数调用)。

于 2013-10-07T20:07:48.563 回答