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違っちゃうけど仕方ない