728x90
프로그래스 바 구현하기
function updateProgressBar(progress) {
const barLength = 20;
const filledLength = Math.round((progress / 100) * barLength);
const emptyLength = barLength - filledLength;
const filledBar = "\x1b[103m \x1b[0m".repeat(filledLength);
const emptyBar = "\x1b[100m \x1b[0m".repeat(emptyLength);
process.stdout.write("\x1b[1A\x1b[2K");
console.log(`<${filledBar}${emptyBar}> 조금만 기다려주세요.${progress}%`);
}
function progressBar() {
let progress = 0;
const interval = setInterval(() => {
updateProgressBar(progress);
progress += 1;
if (progress > 100) {
clearInterval(interval);
}
}, 50);
}
progressBar();
⸰progressBar()
- 프로그래스가 0에서 시작하고, 해당 프로그래스 바는 0.5초마다 프로그래스를 1씩 증가하며updateProgressBar()
함수를 호출하는 함수
- 프로그래스가 100이 되면,clearInterval()
함수로 해당 이벤트를 제거
⸰updateProgressBar()
- 프로그래스 바를 콘솔창에 출력하는 함수
- 프로그래스를 100으로 나누고, 길이만큼 곱하여 해당 비율만큼filledBar
로 채우고, 남은 프로그래스 바는emptyBar
로 채움
-ANSI escape code
를 활용하여, 커서를 한 줄 위로 이동하고, 해당 줄을 지우며, 프로그래스 바를 덧쓰어는 방식으로 출력
728x90
'💠프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[심화] Object / Map 의 차이점은 뭘까? (0) | 2024.08.26 |
---|---|
[심화] 비동기 함수의 반복문은 어떻게 사용할까? (0) | 2024.08.05 |
[심화] 비동기 함수 Promise, async/await 파헤치기 (0) | 2024.07.29 |
[심화] 이벤트를 발생시키는 EventEmitter (0) | 2024.07.25 |
[심화] 불변성 / 참조 투명성에 대해 알아보자 (0) | 2024.07.24 |