1. ホーム
  2. javascript

[解決済み] setIntervalループをすぐに開始するには?重複

2023-08-14 07:52:48

質問

単純な setInterval

setInterval(function() {
      // Do something every 9 seconds
}, 9000);

最初のアクションは、9秒後に起こります ( t=9s ). ループが最初のアクションをすぐに実行するように強制するには、 ( t=0 )?

の仕組みによるものだと思います。 setInterval を持たせるために Delay - Action - Delay - Action ... の代わりに Action - Delay - Action - Delay ... ループになります。

EDITです。 私の関数は、確かに次のようにループしています。

setInterval(function(){
$('.test').each(function(idx){
    var duration = 1000;
    $(this).delay(duration*idx);
    Some stuff here
});
}, 4000);

どのように解決するのですか?

シンプルにする 無名関数の代わりに名前付き関数を使い、それを呼び出して間隔を設定します。

function doSomething() {
    console.log("tick");
}
doSomething();
setInterval(doSomething, 9000);

必要ならスコープを作成する。

(function() {
    function doSomething() {
        console.log("tick");
    }
    doSomething();
    setInterval(doSomething, 9000);
})();

最後に、以下は x :

setInterval(function x() {
    console.log("tick");
    return x;
}(), 9000);