8
7

More than 5 years have passed since last update.

ある処理を逐次一定期間ごとに繰り返す

Last updated at Posted at 2013-11-29

ある処理が終わったら、同じような処理をパラメータだけ変えてもう1回後(たとえば1秒後)にやりたいなという場合
setInterval()だと処理が終わったか終わってないかに関わらず一定期間経過で処理が走ってしまうので今回の要件としてはNG
Chrome拡張作ってて、ページングされてるHTMLをクロールしたい、けど田代砲もどきは作りたくない、という需要のもと、色々調べたんです

で、Alarm API使えば?というツッコミもあると思うところだけど

「繰り返しの最低周期が分単位でしか指定できないじゃん、さすがに1ページ2分とかは無理がある」

という事実に気づいてガッカリ
逆に言えば、分単位でいいものはAlarm APIのほうがすっきりしてると思うのでお勧め

var repeat = function(){
    console.log('repeatFunc() started.');
    /*
        実際の処理などに使う変数などの初期化
    */
    var repeatProcess = function(){
        /*
            実際に処理を行う内容
            終了条件を満たさない場合(まだ続けるよって場合)は
            setTimeout(repeatProcess, 1000);
            などと次回の実行をセットする
        */
    }
    //  初回の実行
    setTimeout(repeatProcess, 1000);
};
repeat();

repeat()に初期変数を渡してあげて、repeat()で参照してみたり、繰り返しの周期を初期変数に突っ込んだり、repeat()の第二引数にしてもいいかもしれない

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7