2017-10-07 13 views
-1

私のメインスクリプトで定期的に関数を呼び出すタイマーを起動しました。実行中のファイルの外側からStopメソッドを呼び出すにはどうすればよいですか?Node.jsのメインスクリプトから関数を呼び出す

var myVar = setInterval(progress, 10000); 

    function progress() { 
    // do smth 
    } 

    function stopInterval() { 
     clearInterval(myVar); 
    } 

スクリプトが実行されている場合、どうすればstopInterval()を呼び出すことができますか?

私はこのような私のmain.js内の関数をエクスポート:

module.exports.stopTimer = function() { 
    console.log("Stop Timer"); 
    clearInterval(myVar); 
}; 

と私は、次の内容の別ファイル(stoptimer.js)作成:

var main = require('./main.js'); 
    main.stopTimer(); 

はので、この権利ですが遠い?はいの場合、stoptimer.jsはどのように実行できますか? main.jsスクリプトが実行されているため、私のコマンドラインがブロックされています。

+0

。あなたはそれに特有の問題を抱えていますか?これが別のnode.jsモジュールにある場合は、 'stopInterval()'関数をエクスポートして別のモジュールにインポートして使用できるようにする必要があります。 – jfriend00

+0

「進捗状況」が実際に何をしているかを知らなくても、誰もこの質問に本当に答えることはできませんが、CPUバインドされたコードを実行していれば答えはできません。 – James

+0

実行中のファイルの外から何を意味するのですか? JavaScriptには1つのグローバルスペースがあります。このようにstopIntervalを定義すると、他の場所から呼び出すことができます。@ jfriend00が述べたように、具体的に記述してください。 – Ralph

答えて

0

あなたはインターバル機能の内部clearInterval()を呼び出すことができ、あなたがここに捕まってしまったところ単純な答えは、あなたがどんなコードから、あなたが実行している `stopInterval()`を呼び出すことであるので、それははっきりしていない

let shouldRun = true; 

function shouldStop(){ 
shouldRun = false; 
} 

function progress(){ 
    if(!shouldRun){ 
     clearInterval(interval); 
    } 
} 
let interval = setInterval(progress, 10000); 

// call from other file or elsewhere 
setTimeout(()=>{shouldStop()}, 1500);