2017-12-11 18 views
1

私は20秒ごとにもう1つは30秒ごとに、もう1つは40秒ごとに何かしたい。これは私がこのシチュエーションのためにやっていることです:Javascript - 複数のsetIntervalは良い方法ですか?

const seconds = 1000; 
setInterval(doStuff1, 20 * seconds); 
setInterval(doStuff2, 30 * seconds); 
setInterval(doStuff3, 40 * seconds); 

しかし、これは私にとっては良い方法ではありません。また、ボットの速度を遅くする可能性もありますが、ボットバックはボットバックなので、それほど重要ではありません。

これが最も正しい方法ですか?

+0

あなたの懸念は何ですか?なぜこれが適切な解決策でないかもしれないと思いますか?あまりに多くの(何千もの)タイマーを作成しておらず、実行の順序と正確なタイミングが重要でない場合、これは良い、簡単な解決策です。 –

+0

@ArashMotamediはい、私はそれについて心配しました。ありがとう。 –

答えて

2

setIntervalsを3つ持つことはあまり大したことではありませんが、ボタンをクリックして特定の間隔を停止することを制御する必要がある場合には制限はありませんこのようなもの。

const seconds = 1000; 
const time = 0; 

const interval = setInterval(() => { 
    time += 10 

    (time % 20 === 0) && doStuff1(); 

    (time % 30 === 0) && doStuff2(); 

    (time % 40 === 0) && doStuff3(); 

}, 10 * seconds); 

本が出てくるが、それは一つだけではなく、複数を有し、かつ、後の時点で1にclearIntervalに忘れるよりも、あなたが開始された間隔を覚えておくだけの簡単な方法だ大した最適化はありません。

オーバーヘッドもありません。 20秒、30秒、40秒の3つのインターバルは、100秒のスパンで10回トリガーします。これは10秒のインターバルと同じです。

100秒

3間隔 - 10回の呼び出し

1間隔 - 10回の呼び出し

200秒

3間隔 - 21回の呼び出し

1間隔 - 20回の呼び出し

300秒

3間隔 - 32回の呼び出し

1間隔 - 30回の呼び出し

+0

だから、あなたは3タイマーが大丈夫だと言ったので私が使った方法を使うつもりだと思います。 –

関連する問題