2017-06-30 8 views
0

私はエクスプレスjsを持つノードjsサーバーを持っています。 1つのルート上で、setIntervalを使用してインターバルを開始します。 これで、ユーザーが2番目のルートに移動したときにインターバルを停止したいと考えています。express js setInterval route 1とclearInterval route 2

など。

router.get('/startInterval', function() { 
    var timer = setInterval(function() { 
     console.log('Interval is running'); 
    }, 1000); 
}); 

router.get('/stopInterval', function() { 
    // Stop the interval startet before 
    // clearInterval(); <--- How i get the timer object? 
}); 

どうすればよいですか? タイマーをグローバル変数として宣言したらどうなりますか? 2人目のユーザーは、特定のブラウザの最初のユーザーによって開始されたタイマーを停止できますか?

+0

こんにちは、これはどのように解決しましたか? – jaxkodex

答えて

1

あなたはところで外範囲

var timer; 

router.get('/startInterval', function() { 
    timer = setInterval(function() { 
     console.log('Interval is running'); 
    }, 1000); 
}); 

router.get('/stopInterval', function() { 
    clearInterval(timer); 
}); 

にタイマーを定義する必要があり、/stopIntervalルートに行くすべてのユーザーは、グローバルタイマー(すべてのユーザーに対して1つのタイマーを)停止します。

異なるユーザーごとに異なるタイマーを使用する場合は、より複雑なコード(セッション、Cookieなどを使用)が必要になります。

+0

はい、それは問題です。 グローバルタイマーが1つは必要ありません。そして、私はsetIntervalからidをどのように保存することができるのか分かりません。 –