如何擦除在控制台中打印的字符

我一直在寻找如何去做其他语言,我发现我必须使用特殊字符\ b删除最后一个字符。 ( how-do-i-erase-printed-characters-in-a-console-applicationlinux )

这对多次调用console.log()中的node.js不起作用。

如果我写一个日志:

console.log ("abc\bd"); 

我得到的结果是:abd

但是如果我写:

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

我得到的结果是:

ABC
d

我的目标是打印一个等待消息,如:

等候
等候。
等候..
等候…

然后再次:

等候
等候。
等等

都在同一行。

有些function可用于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); 

更新 2015年12月13日:尽pipe上面的代码工作,它不再被logging为process.stdin一部分。 它已经转移到readline

现在你应该使用require('readline')和它的API来做这个东西。

覆盖同一行最简单的方法是

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

\r是关键。 它会将光标移回到行的开头。

尝试通过在string的开始处移动\ r,在Windows上为我工作:

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