[심화] 프로그래스 바 구현하는 방법

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