【JavaScript】変数を監視する関数

2018年9月5日

既存の変数を手軽に監視する手段が欲しかったため作成。

コード

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により、タイマーが生成される。このタイマーは仕組み上破棄されないので、それを考慮した上で用いなければならない。