Подтвердить что ты не робот

Как стирать символы, напечатанные в консоли

Я искал, как это сделать на других языках, и я обнаружил, что мне нужно использовать специальный символ \b для удаления последнего символа. (how-do-i-erase-printed-characters-in-a-console-applicationlinux)

Это не работает для node.js в нескольких вызовах console.log();

Если я пишу один журнал:

console.log ("abc\bd");

Получаю результат: abd

Но если я пишу:

console.log ("abc");
console.log ("\bd");

Получаю результат:

а
д

Моя цель - напечатать ожидающее сообщение, например:

Ожидание
Ожидание.
Ожидание..
Ожидание...

и снова:

Ожидание
Ожидание.
и т.д.

все в одной строке.

4b9b3361

Ответ 1

Доступны функции для process.stdout:

var i = 0;  // dots counter
setInterval(function() {
  process.stdout.clearLine();  // clear current text
  process.stdout.cursorTo(0);  // move cursor to beginning of line
  i = (i + 1) % 4;
  var dots = new Array(i + 1).join(".");
  process.stdout.write("Waiting" + dots);  // write text
}, 300);

Обновление 13 декабря 2015 года: хотя приведенный выше код работает, он больше не документируется как часть process.stdin. Он переместился в readline

Ответ 2

Теперь вы должны использовать require('readline') и API для этого.

Ответ 3

Самый простой способ перезаписи одной строки -

var dots = ...
process.stdout.write('Progress: '+dots+'\r');

ключ \r. Он вернет курсор к началу строки.

Ответ 4

Попробуйте переместить \r в начале строки, это работало на Windows для меня:

for (var i = 0; i < 10000; i+=1) {
    setTimeout(function() {
        console.log(`\r ${i}`);
    }, i);
}