최대 1 분 소요

오늘 배운 것

  • 코딩 테스트

중간까지는 그렇게 어려운 문제는 없는 것 같다.
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 강의를 듣도록 하자.

태그:

카테고리:

업데이트: