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