Suspense를 사용하여 사용자 입력을 지연시키는 방법은?
const readline = require('readline');

// 사용자 입력을 처리하기 위한 readline 객체 생성
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 사용자 입력을 지연시키는 함수
function delayUserInput() {
    return new Promise((resolve) => {
        // 사용자 입력을 받기 전에 3초 지연
        setTimeout(() => {
            rl.question('사용자 입력을 기다리고 있습니다: ', (answer) => {
                resolve(answer); // 입력 받으면 resolve 호출
            });
        }, 3000);
    });
}

// 지연된 사용자 입력 처리하기
async function processUserInput() {
    try {
        console.log('3초 동안 사용자 입력을 기다립니다...');
        const userInput = await delayUserInput();
        console.log(`사용자 입력: ${userInput}`);
        rl.close(); // readline 객체 닫기
    } catch (error) {
        console.error('에러 발생:', error);
    }
}

// 사용자 입력 처리 시작
processUserInput();

위의 예제 코드는 Node.js에서 사용자 입력을 3초 동안 지연시키는 방법을 보여줍니다. 코드를 실행하면 “사용자 입력을 기다리고 있습니다”라는 메시지를 출력한 후, 3초가 지난 뒤 사용자로부터 입력을 받습니다. 입력을 받으면 해당 입력을 출력하고 readline 객체를 닫아 작업을 종료합니다.

이 예제에서는 readline 모듈을 사용하여 사용자 입력을 처리합니다. readline.createInterface()를 사용하여 readline 객체를 생성하고, rl.question()을 사용하여 사용자에게 질문을 표시하고 입력을 받습니다. setTimeout() 함수를 사용하여 3초 동안 대기한 후에 입력을 받도록 지정하였습니다.

지연된 사용자 입력을 처리하기 위해 delayUserInput() 함수를 async/await 문법을 사용하여 비동기적으로 호출하고, 입력을 받으면 resolve() 함수를 호출하여 프로미스를 해결합니다.

processUserInput() 함수에서는 await 키워드를 사용하여 delayUserInput() 함수의 결과를 기다리고, 결과를 변수에 할당한 후 출력합니다. 에러가 발생하면 try/catch 문법을 사용하여 에러를 처리합니다.

이와 같이 suspense를 사용하여 사용자 입력을 지연시킬 수 있습니다. 이를 활용하면 사용자 입력에 대해 대기 시간을 설정할 수 있고, 비동기적인 작업을 보다 효과적으로 처리할 수 있습니다.

해시태그: #JavaScript #Node.js