月 の 上

worker-timerでタイマー使いまわす

setTimeout、普通に使うとタブ切り替えると遅くなって最悪。
web worker内でsetTimeoutすると大丈夫。

mohayonaoさんのworker-timer使うと便利。

JSタイマー三種盛りとそのインターフェース - 音の鳴るブログ

worker-timer、setIntervalじゃなくてsetTimeoutを頻繁に呼ぶと毎回ワーカ生成するので詰まる。
ので、タイマーID受け取って使いまわせると吉。

ということでforkした。

いちおテストも書いた。

↓使い方↓

T = require('worker-timer')

// 毎回ワーカ生成
T.setTimeout(function foo(){
  bar(); 
  T.setTimeout(foo, 1000)
}, 1000);


// ワーカ使いまわす
var TID;
TID = T.setTimeout(function foo(){
  bar(); 
  T.setTimeout(foo, 1000, TID)
}, 1000);

window.setTimeoutとちょっとAPI違っちゃうけど仕方ない