2017-10-07 1 views
-1

함수를 주기적으로 호출하는 타이머를 시작했습니다. 실행중인 파일 외부에서 Stop-Method를 호출하려면 어떻게해야합니까?Node.js의 주 스크립트에서 함수 호출 내 주 스크립트에서

var myVar = setInterval(progress, 10000); 

    function progress() { 
    // do smth 
    } 

    function stopInterval() { 
     clearInterval(myVar); 
    } 

스크립트가 실행 중일 때 어떻게 호출합니까?

내가 이렇게 내 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

아무도'progress'가 실제로하고있는 일을 모른 채이 질문에 답할 수는 없지만, CPU- 바운드 코드를 실행하고 있다면 답변을 할 수 없다는 것을 말할 수 있습니다. – James

+0

실행중인 파일 외부에서 무엇을 의미합니까? JavaScript에는 하나의 전역 공간이 있습니다. 이와 같이 stopInterval을 정의하면 다른 위치에서 호출 할 수 있습니다 ... @ jfriend00이 명시된대로 좀 더 자세하게 작성하십시오. – Ralph

답변

0

당신은 interval 함수의 내부 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); 
관련 문제