协慌网

登录 贡献 社区

Node.js:无需尾随换行符即可打印到控制台?

是否有一种无需尾随换行符即可打印到控制台的方法? console对象文档对此没有任何说明:

console.log()

用换行符打印到标准输出。此函数可以采用printf()的方式接受多个参数。例子:

console.log('count: %d', count);

如果在第一个字符串中找不到格式设置元素,则在每个参数上使用util.inspect

答案

您可以使用process.stdout.write()

process.stdout.write("hello: ");

有关详细信息,请参阅文档。

另外,如果要覆盖同一行中的消息(例如,在倒计时中),则可以在字符串的末尾添加 “\ r”。

process.stdout.write("Downloading " + data.length + " bytes\r");

为了扩展 / 增强上述 @rodowi 关于可以覆盖一行的出色补充,请执行以下操作:

process.stdout.write("Downloading " + data.length + " bytes\r");

如我在代码中所见,如果您不希望终端光标位于第一个字符处,请考虑执行以下操作:

let dots = ''
process.stdout.write(`Loading `)

let tmrID = setInterval(() => {
  dots += '.'
  process.stdout.write(`\rLoading ${dots}`)
}, 1000)

setTimeout(() => {
  clearInterval(tmrID)
  console.log(`\rLoaded in [3500 ms]`)
}, 3500)

通过将\r放在下一个打印语句的前面,就可以在替换字符串覆盖前一个字符串之前重置光标。