0

私はJSプログラミングの初心者なので、ご容赦ください。

次の問題があります。

モジュールの 1 つに setInterval ループが含まれています。このモジュールはserver.js、HTML ボタンがクリックされたときに my によって呼び出されます (ON、コード内の可変状態)。から実行を中断(OFF)したいのserver.jsですが、うまくいきません。

重複した質問のように感じますが、スタック オーバーフロー内の情報をたくさん検索しました。すべての質問は、同じファイル内から実行および停止されているコードを参照しています。私の場合、外部ファイル ( を含むsetInterval) でメソッドを呼び出しており、その外部ファイルで実行する必要があるメソッドをトリガーしたいclearInterval!

以下の簡略化されたコード:

action.js

module.a = function(milisec) {
    var myVar = setInterval( function() { do stuff }, milisec);
}
module.exports = methods;

私の最初の試み:

サーバー.js

// var state is a button on my HTML
var actions = require('./actions');
If (state == 1)
{ actions.a(milisec) }
If (state == 0)
{ clearInterval(myVar) }

しかし、うまくいきませんでした。また、理由も明らかだと思います。コードには、どこから を取得したのかわかりません。myVar基本的に、モジュール内から関数を呼び出して を停止する必要があると思います。そのため、メソッドsetIntervalに関数を含めました。stop()

私の2回目の試み:

action.js

methods.a = fuction(milisec) {
    var myVar = setInterval( function() { 
    console.log("I'm being executed");}, milisec);
    function stop() {
      clearInterval(myVar); 
    }
}
Module.exports = methods;

server.jsしかし、ファイルのmethods.a内の関数を参照する方法がわかりません

私はもう試した:

actions.a.stop() 

しかし、それはまったく機能しません..それは可能ですか?clearIntervalで実行する方法はありserver.jsますか?

あなたの助けに感謝

4

1 に答える 1

0

methods.a() 内で myVar を宣言しているため、スコープはその関数に対してローカルになります。関数の外で myVar を宣言してみてください。

于 2017-03-05T21:13:52.300 に答える