squadbrodyaga
@squadbrodyaga
帆は風を変えた

Как отобразить процесс работы в терминале?

Здравствуйте, появилось желание узнать как красиво отобразить процесс работы в терминале,
например сейчас я просто пишу console.log() в начале работы и когда она завершается, вот как это
выглядит.
console.log('Начало работы...')
... функции
console.log('Работа завершена')


Но как отобразить в терминале что-то вреде полосы загрузки? Что-то вроде этого:
30%
█████▒▒▒▒▒
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
MvcBox
@MvcBox
Software Engineer [C/C++/JS(for Node.js)/etc]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Geminix
@Geminix
Фуллстек nuxt, .net разработчик
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
setTimeout(function f(percent) {
    if (!process.stdout.isTTY) return;
    if (percent > 100) {
        process.stdout.write('\n');
        return;
    }
    const FILL = 9608;
    const SHADE = 9617;
    const progressSize = process.stdout.columns / 2;
    const fillSize = Math.ceil(progressSize * percent / 100);
    const shadeSize = Math.floor(progressSize) - fillSize;
    const fillText = String.fromCharCode(FILL).repeat(fillSize);
    const shadeText = shadeSize > 0
        ? String.fromCharCode(SHADE).repeat(shadeSize)
        : '';
    process.stdout.clearLine();
    process.stdout.write(`\r${fillText}${shadeText} ${percent}%`);
    setTimeout(f, 250, percent + 1);
}, 100, 0);

https://nodejs.org/dist/latest-v18.x/docs/api/tty.html
https://unicode-table.com/en/blocks/block-elements/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы