2024-11-11 TIL
오늘 배운 것
- 코딩 테스트
중간까지는 그렇게 어려운 문제는 없는 것 같다.
70~80번대 문제부터가 좀 난이도가 붙는 느낌인데 거기부터는 시간이 걸릴 것 같으니 좀 걱정된다.
- 비동기 시간 제한 구현
오늘은 입력을 일정 시간 하지 않으면 default 값이 들어가는 코드를 작성했다.
가능하면 readlinesync를 쓰고 싶었지만 이걸론 입력 인터럽트가 안 되는 모양이라 readline.stdin으로 작성했다.
export async function getinputwithtimeout_without_ReadlineSync(question, timeout, defaultValue) {
let inputReceived = false;
return new Promise((resolve) => {
const timer = setTimeout(() => {
if (!inputReceived) {
resolve(defaultValue);
process.stdin.pause();
}
}, timeout);
process.stdin.resume();
process.stdout.write(question);
process.stdin.on('data', (data) => {
if (!inputReceived) {
inputReceived = true;
clearTimeout(timer);
const userinput = data.toString().trim();
resolve(userinput);
process.stdin.pause();
}
})
})
}
readline.stdin의 경우 브라우저 같은 환경에선 작동 안 된다고 하니
다른 곳에 포팅을 할 때는 어떤 함수를 쓰는지도 알아야 하겠다.
그와는 별개로 promise를 위시한 비동기의 개념이 꽤 유용하다는 것을 느꼈다.
내일 할 것
보드 게임 만드는 건 좀 더 수정하고, 그 외에는 nodejs 강의를 듣도록 하자.