有一种方法可以配置javascript的setInterval方法来立即执行该方法,然后与计时器一起执行


当前回答

你可以在函数中设置一个非常小的初始延迟时间(例如100),并将其设置为你想要的延迟时间:

Var延迟= 100; 函数foo() { console.log("改变初始延迟时间为你想要的。"); 延迟= 12000; setTimeout (foo,延迟); }

其他回答

为了解决这个问题,我在页面加载后第一次运行这个函数。

function foo(){ ... }

window.onload = function() {
   foo();
};

window.setInterval(function()
{
    foo(); 
}, 5000);

我建议按以下顺序调用这些函数

var _timer = setInterval(foo, delay, params);
foo(params)

你也可以把_timer传递给foo,如果你想在特定的条件下清除interval (_timer)

var _timer = setInterval(function() { foo(_timer, params) }, delay);
foo(_timer, params);

我不确定我是否理解正确,但你可以很容易地做这样的事情:

setInterval(function hello() {
  console.log('world');
  return hello;
}(), 5000);

显然有很多方法可以做到这一点,但这是我能想到的最简洁的方法。

在ES2017中,最好完全避免使用setInterval。

下面的解决方案具有更清晰的执行流程,可以防止函数需要比预期时间更长的时间才能完成的问题,并允许异步操作。

const timeout = (delayMs) => new Promise((res, _rej) => setTimeout(res, delayMs));

const DELAY = 1_000;

(async () => {
  while (true) {
    let start_time = Date.now();

    // insert code here...

    let end_time = Date.now();
    await timeout(DELAY - (end_time - start_time));
  }
})();

其实最快的就是去做

interval = setInterval(myFunction(),45000)

它会调用myfunction,然后每45秒再做一次,这和之前做的不一样

interval = setInterval(myfunction, 45000)

它不会调用它,但只安排它