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


当前回答

其实最快的就是去做

interval = setInterval(myFunction(),45000)

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

interval = setInterval(myfunction, 45000)

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

其他回答

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

function foo(){ ... }

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

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

如果你可以使用RxJS,有一个叫做timer()的东西:

import { Subscription, timer } from 'rxjs';

const INITIAL_DELAY = 1;
const INTERVAL_DELAY = 10000;
const timerSubscription = timer(INITIAL_DELAY, INTERVAL_DELAY)
  .subscribe(() => {
    this.updateSomething();
  });

// when destroying
timerSubscription.unsubscribe();

这里有一个简单的版本给新手,没有所有的混乱。它只是声明函数,调用它,然后开始interval。就是这样。

//在这里声明函数 函数My_Function () { console.log (" foo "); } //首先调用函数 My_Function (); //设置时间间隔 Var interval =窗口。setInterval(My_Function, 500);

其实最快的就是去做

interval = setInterval(myFunction(),45000)

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

interval = setInterval(myfunction, 45000)

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

如果你需要,这里有一个包装来美化它:

(function() {
    var originalSetInterval = window.setInterval;

    window.setInterval = function(fn, delay, runImmediately) {
        if(runImmediately) fn();
        return originalSetInterval(fn, delay);
    };
})();

将setInterval的第三个参数设置为true,它将在调用setInterval后立即运行:

setInterval(function() { console.log("hello world"); }, 5000, true);

或者省略第三个参数,它将保持原来的行为:

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

一些浏览器支持setInterval的附加参数,但这个包装器没有考虑到这些参数;我认为这些很少使用,但如果你确实需要它们,请记住这一点。