-
[JS Module] 콘솔창을 통한 입력 / readline moduleJavascript/모듈 2022. 12. 14. 16:23반응형
프로그래머스 Lv. 0의 문제를 풀다 처음 접하는 모듈이 있어서 정리해보려한다. readline 모듈은 콘솔을 통해 입력값을 받고 한 줄씩 처리할 수 있게 해주는 모듈이다. 아래의 코드는 문제에 답으로 제출한 코드인데 이를 들여다 보며 모듈이 어떤 방식으로 동작하는지 알아보자
const readline = require('readline'); // 모듈 import const rl = readline.createInterface({ // interface 객체 생성 input: process.stdin, output: process.stdout }); let N; // 입/출력에서 사용될 변수 선언 rl.on('line', function (line) { // 입/출력 처리 (입력부) N = Number(line); rl.close(); }).on('close', function () { // 입/출력 처리 (출력부) for (let i = 1; i<=N; i++) { console.log('*'.repeat(i)) } });
모듈 불러오기
const readline = require("readline");
interface 객체 생성
const rl = readline.createInterface({ input: process.stdin, output: process.stdout, });
인터페이스 객체 rl을 통한 입출력 처리
rl.on('line', function (line) { rl.close(); });
콘솔으로 부터 입력은 첫번째 인자를 'line'으로 전달함으로서 이루어진다. 이 이벤트는 한줄씩 입력을 받으며 입력받은 한 줄의 데이터는 line변수에 저장되어 callback 함수에 전달된다. rl.close()를 명시하지 않을 경우 무한하게 입력이 이루어지므로 주의해야한다.(의도적으로 명시하지 않음으로서 여러줄을 입력받는 것도 가능하다.)
rl.on('close', () => { process.exit(); })
출력은 첫번째 인자를 'close'로 전달하여 실행된다. 앞서 입력의 경우에서 close() 함수가 호출되었을 때 실행된다. 보통 맨 위의 예시 코드에서와 같이 입력의 callback에서 데이터를 처리하고, 출력에서 의도한 대로 결과물을 출력한다.
반응형