1. ホーム
  2. node.js

[解決済み] node.js:setIntervalとclearIntervalの使い方は?

2022-03-17 13:17:01

質問

これは、nodeJSで私のJSです。

function test(a, room, seconds) {
    console.log(a, room, seconds);
}

intervalid = setInterval(test, 1000, 'room', 20);
console.log('intervalid', intervalid);

という出力が返ってきます。

intervalid Timeout {
    _called: false,
    _idleTimeout: 1000,
    _idlePrev: TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
        _unrefed: false,
        msecs: 1000,
        nextTick: false
    },
    _idleNext: TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
        _unrefed: false,
        msecs: 1000,
        nextTick: false
    },
    _idleStart: 377,
    _onTimeout: [Function: test],
    _timerArgs: [ 'room', 20 ],
    _repeat: 1000
}

単純なJavascriptでは、単純なINTEGER数を返しますが

既存のユーザーオブジェクトにintervalをアタッチする場合、例えば:

user.intervalid = setInterval(test, 1000, 'room', 20);

私はこれ以上clearIntervalをすることができません。

clearInterval(user.intervalid); // does not work

解決方法は?

setInterval()の使用

指定した間隔でコードブロックの実行を繰り返す必要がある場合はどうすればよいでしょうか。そのために、Node には setInterval() と clearInterval() と呼ばれるメソッドがあります。setInterval() 関数は setTimeout() と非常によく似ており、コールバック関数、遅延、コールバック関数に渡すオプション引数などの同じパラメータを使用します。

setInterval()の簡単な例を以下に示します。

var interval = setInterval(function(str1, str2) {
  console.log(str1 + " " + str2);
}, 1000, "Hello.", "How are you?");

clearInterval(interval);

これは、1分ごとに1つのインターバルだけを実行し続けたい場合の別の方法です。

function intervalFunc() {
    console.log("Hello!!!!");
     }
    setInterval(intervalFunc,1500);

上記の例では、intervalFunc() は停止されるまで約1500ミリ秒(1.5秒)ごとに実行されます。これが役に立つといいのですが。