实现说明

使用 console.log('hello') 打印,会自动在结尾加上 \r, 所以 每次打印都是在新的一样,

Node 中,可以使用 process.stdout.write('hello') 实现不换行打印,一直在当前行追加,

如果我们想 每次打印都从 当前行的行首开始打印, 可以 在 process.stdout.write 中添加 转义字符 \r, 像这样 process.stdout.write('hello \r')

文义来说\r代表回车,\n代表换行
在老式的机械打字机,如果你想在下一行最左端开始继续打印,需要做两个动作,先把机头重新推回最左侧,这就是回车,但是他还没有换行,然后再按一下换行键,这样才到下一行。
计算机刚产生的时候,主要还是文字界面,受打字机影响,也就有了这两个特殊字符

示例代码

test-print.js

const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))


!(async () => {
    const total = 10
    for (let i = 0; i < total; i++) {
        await sleep(1000) // 每次延时 1s
        process.stdout.write(`${i + 1} / ${total} \r`)
    }
    console.log('\n完成')
})()

运行效果演示:

参考:

nodejs printing to console without a trailing newline
C语言中\r是什么意思?和\n有什么区别

版权声明:本文为暗恋桃埖源原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/taohuaya/p/16427408.html