节点js控制台写入百分比

时间:2014-08-08 00:08:44

标签: javascript node.js console line

我需要与其他行同时写在同一行。

var i = 1;
write();
function write() {
    if (i == 6) return;
    setTimeout(function() {
        console.log('-------------');
        process.stdout.write('Downloading ' + i + '% complete... \r');
        i++;
        write();
    }, 100);
}

我得到了什么:

-------------
-------------% complete... 
-------------% complete... 
-------------% complete...  Downloading 5% complete...

我需要什么:

-------------
Downloading 5% complete...
-------------
-------------
-------------
-------------

我更喜欢在没有任何模块的情况下这样做。

这里有各种各样的话题,但没有一个解释如何按我的意愿去做。

我想我第一次写行时需要保存光标位置,然后下次写入时,我必须将光标移动到保存的行吗?

2 个答案:

答案 0 :(得分:1)

process.stdout.write('Downloading ' + i + '% complete... \r');

\r字符表示返回当前行的开头。你正在寻找\n,它也会跳下一条线。或者继续使用console.log作为您的其他行,它会自动附加换行符。

答案 1 :(得分:0)

我使用C / C ++中的curses库完成了这种事情。 有一个名为node-ncurses的节点,它可以帮助你。

https://github.com/mscdex/node-ncurses