2017-03-05 21 views
0

私はJSプログラミングの初心者ですので、私に同行してください。外部からのメソッドの呼び出し関数ja

私は次のような問題があります。私のモジュールの

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

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

以下

簡体コード:

は私の最初の試み

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

action.js:

Server.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()という関数が含まれています。

私の第二の試み:

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

action.jsしかし、私はserver.jsファイル

私に私のmethods.a内の関数を参照する方法がわかりません試しました:

actions.a.stop() 

でも全く動作しません。 それは可能ですか? server.jsclearIntervalを実行する方法はありますか?

は、あなたはそれがその関数に対してローカルスコープの作る、)(methods.aの内側myVarを宣言しているあなたの助け

+0

コードの実行場所とファイルが別々の理由について説明してください。両方のファイルが同じHTML文書に埋め込まれているのか、NodeJSサーバー上でリモートで実行されている 'server.js'ですか? – Martin

+0

は両方とも同じHTMLに埋め込まれています!私はビーグルボーンに取り組んでおり、socket.ioを利用してコードを実行するためのサーバを作成しています。 –

答えて

0

を感謝しています。関数の外でmyVarを宣言してみてください。

+0

...グローバル/ローカル変数についてのすべてだったようです。:) Larry、ありがとう。 actions.jsでmyvarを宣言し、関数stopのメソッドを作成しました。これはserver.jsの場合はstate == 0の内部で呼び出されました –

関連する問題