Reputation: 18427
I've been searching how to do it in other languages and I've found that I have to use the special character \b to remove the last character. (how-do-i-erase-printed-characters-in-a-console-applicationlinux)
This doesn't work for node.js in multiple calls to console.log ();
If I write a single log:
console.log ("abc\bd");
I get the result: abd
But if I write:
console.log ("abc");
console.log ("\bd");
I get the result:
abc
d
My goal is to print a waiting message like:
Waiting
Waiting.
Waiting..
Waiting...
and again:
Waiting
Waiting.
etc
all in the same line.
Upvotes: 85
Views: 57345
Reputation: 53
The carriage return character places the cursor back at the beginning of the current line.
process.stdout.write("\r");
This solution worked for me — I only tested it with a single character.
Upvotes: 1
Reputation: 154878
There are functions available for 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);
It is possible to provide arguments to clearLine(direction, callback)
/**
* -1 - to the left from cursor
* 0 - the entire line // default
* 1 - to the right from cursor
*/
Update Dec 13, 2015: although the above code works, it is no longer documented as part of process.stdin
. It has moved to readline
Upvotes: 147
Reputation: 1060
This works for me:
process.stdout.write('\033c');
process.stdout.write('Your text here');
Upvotes: 3
Reputation: 1730
Now you could use readline
library and its API to do this stuff.
Upvotes: 20
Reputation: 8424
Try by moving the \r at the start of the string, this worked on Windows for me:
for (var i = 0; i < 10000; i+=1) {
setTimeout(function() {
console.log(`\r ${i}`);
}, i);
}
Upvotes: -3
Reputation: 1086
The easiest way to overwrite the same line is
var dots = ...
process.stdout.write('Progress: '+dots+'\r');
the \r
is the key. It will move the cursor back to the beginning of the line.
Upvotes: 21