Как стирать символы, напечатанные в консоли
Я искал, как это сделать на других языках, и я обнаружил, что мне нужно использовать специальный символ \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");
Получаю результат:
а
д
Моя цель - напечатать ожидающее сообщение, например:
Ожидание
Ожидание.
Ожидание..
Ожидание...
и снова:
Ожидание
Ожидание.
и т.д.
все в одной строке.
Ответы
Ответ 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);
}