2017-03-05 2 views
0

JS 프로그래밍의 초보자부터 나와 함께하시기 바랍니다. 내 모듈의외부에서 js 메서드로 호출 함수를 호출

하나는 setInterval을 루프를 포함

나는 다음과 같은 문제가있다. HTML 버튼을 클릭하면이 모듈이 server.js에 의해 호출됩니다 (ON, 코드의 변수 상태). server.js에서 실행 (OFF)을 중단하고 싶지만 작동하지 않습니다.

중복 질문처럼 느껴지 긴하지만, Stack Overflow 및 모든 질문을 참조하는 정보를 많이 검색했습니다. 동일한 파일 내에서 실행 및 중지되는 코드 내 경우에는 외부 파일 (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에 포함되어 있습니다! 나는 beaglebone에서 일하고있어 코드를 실행하기위한 서버를 생성하는 socket.io를 이용하고있다 .. –

답변

0

을 주셔서 감사합니다. 함수 밖에서 myVar을 선언 해보십시오.

+0

글쎄 ... 글로벌/로컬 변수에 관한 것 같다. :) Larry, thanks Larry. actions.js에 myvar를 선언하고 server.js에있는 경우 state == 0 내에서 함수 중지를위한 메소드를 작성했습니다. –