2013-10-30 2 views
7

키를 누를 때까지 스크립트 실행을 일시 중지하는 기능이 필요합니다.아무 키나 눌러 노드 j로 계속합니다.

var stdin = process.openStdin(); 
require('tty').setRawMode(true);  

stdin.on('keypress', function (chunk, key) { 
    process.stdout.write('Get Chunk: ' + chunk + '\n'); 
    if (key && key.ctrl && key.name == 'c') process.exit(); 
}); 

을하지만 그냥 키를 누를 때 듣고있어 아무 일도 발생하지 않습니다 : 나는 시도했습니다. 프로그램이 계속 실행되지 않습니다.

실행을 일시 중지하려면 어떻게해야합니까? 나를 위해

+0

루프에서이 기능을 사용합니까? 또한 동기 함수 또는 비동기 함수도 일시 중지하려고합니까? – EmptyArsenal

+1

백그라운드에서 실행중인 스크립트의 실행을 일시 중지 할 수 없습니다. 하지만 그게 중요하다고 생각하지 않습니다. 프로세스를 일시 중지해야합니다 .stdin/stdout. [readline] (http://nodejs.org/api/readline.html) 패키지를 살펴볼 수 있습니다. – user568109

답변

11

작품 :

console.log('Press any key to exit'); 

process.stdin.setRawMode(true); 
process.stdin.resume(); 
process.stdin.on('data', process.exit.bind(process, 0)); 
+1

그게 나를 위해 잘 작동하지만 당신의 코드와 그 루프를 실행하기 전에 setTimeout과 함께 자신을 호출하는 방법과 루프를 가지고 '후 종료 키를 누르십시오'... – Aebsubis

+0

질문을 게시 할 수 있습니까? 어떤 코드로? 내가 할 수 있으면 대답 할게 기쁠거야. – vkurchatkin

+10

이것은 질문에 대한 해결책이 아니며, 이것은 키 누르기로 프로그램을 죽인다. 질문은 잠시 멈추고 키를 눌렀을 때 다시 시작하는 것이었다. –

0

는 사실이 당신을 도울 것입니다 paktc를라는 NPM 패키지를했다. 패키지를 설치하는 경우 :

> npm install paktc 

그런 다음 당신은 다음과 같이 사용합니다 :

// your console application code here... 

require('paktc') // Press any key to continue... 
+0

나를 위해 작동하지 않습니다 – hellboy

+0

어느 부분? 오류 메시지 나 다른 것이 있습니까? 작동하지 않는 것이 더 구체적 일 수 있습니까? https://github.com/justinmchase/paktc/issues –

+0

이것은 WebStrom 콘솔 문제입니다. – hellboy

2

허용 된 솔루션은 주요 이벤트를 비동기 적으로 대기 후가 정말 해결책이 아니라, 종료 "를 눌러 계속할 수있는 모든 열쇠 ".

일부 nodejs 쉘 스크립트를 작성하는 동안 일시 중지해야했습니다. 나는 쉘 명령 "read"로 child_process의 spawnSync를 사용하는 것을 끝내었다.

기본적으로 스크립트가 일시 중지되며 Enter 키를 누르면 계속 진행됩니다. Windows의 pause 명령과 비슷합니다.

require('child_process').spawnSync("read _ ", {shell: true, stdio: [0, 1, 2]}); 

희망이 있습니다.

1

이 조각은 당신이 프로세스를 종료하지 않으려면 일을 : 당신이 노드 7 당신이 수를 사용하는 경우 않도록-is-- 루프 내에서 작동하지 않습니다 비동기

console.log('Press any key to continue.'); 
process.stdin.once('data', function() { 
    continueDoingStuff(); 
}); 

그것은이다 약속을 지키고 async/await을 사용하십시오.

관련 문제