如何擦除在控制台中打印的字符
我一直在寻找如何去做其他语言,我发现我必须使用特殊字符\ 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); }