我一直在搜索如何用其他语言进行操作,我发现我必须使用特殊字符\ 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
我的目标是打印一条等待的消息:
等待
等待。
等待..
等待...
再次:
等待
等待。
等
都在同一行。
答案 0 :(得分:119)
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日:虽然上述代码有效,但不再将其记录为process.stdin
的一部分。它已移至readline
答案 1 :(得分:18)
现在您可以使用readline
库及其API来完成这些工作。
答案 2 :(得分:15)
覆盖同一行的最简单方法是
var dots = ...
process.stdout.write('Progress: '+dots+'\r');
\r
是关键。它会将光标移回到行的开头。
答案 3 :(得分:0)
这对我有用:
process.stdout.write('\033c');
process.stdout.write('Your text here');
答案 4 :(得分:0)
回车符将光标移回当前行的开头。
process.stdout.write("\r");
此解决方案对我有用-我只用一个字符对其进行了测试。
答案 5 :(得分:-3)
尝试在字符串的开头移动\ r \ n,这适用于我:
for (var i = 0; i < 10000; i+=1) {
setTimeout(function() {
console.log(`\r ${i}`);
}, i);
}