【JavaScript】変数を監視する関数
既存の変数を手軽に監視する手段が欲しかったため作成。
コード
function observe( interval, onGet, onChanged ) {
let previousValue = onGet();
const onObserve = function() {
const VALUE = onGet();
if ( previousValue === VALUE ) return;
onChanged( VALUE );
previousValue = VALUE;
};
setInterval( onObserve, interval );
}
使い方
var value = 0;
const INTERVAL = 100;
const onGet = function() { return value; };
const onChanged = function() { console.log( '値が変更されました。' ); };
observe( INTERVAL, onGet, onChanged );
// onChanged が呼ばれる
value = 1;
引数に「( 監視する )間隔」、「値を取得する処理」、「値を変更した時の処理」を指定し、observe
を呼ぶ。これで一定の間隔で変数を監視できる。この後、変数に変更がある度に「値を変更した時の処理」が呼ばれる。
注意点
observe
を呼ぶたびにsetInterval
により、タイマーが生成される。このタイマーは仕組み上破棄されないので、それを考慮した上で用いなければならない。