NodeJS 不换行打印,实现简单进度条效果

实现说明

使用 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有什么区别

posted @ 2022-06-30 16:20  暗恋桃埖源  阅读(2697)  评论(0编辑  收藏  举报