【问题标题】:Node js console write percentageNode js 控制台写入百分比
【发布时间】:2014-08-08 00:08:43
【问题描述】:

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

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...
-------------
-------------
-------------
-------------

我更喜欢在没有任何模块的情况下执行此操作。

这里有各种各样的话题在谈论这个,但没有一个能解释我想要怎么做。

我觉得我第一次写行的时候需要保存光标位置,然后下次写,我必须把光标移动到保存的行对吗?

【问题讨论】:

  • 不禁注意到-------------13 字符,Downloading 513 字符,即您的---s 写在log 的顶部以前的时间。 (这是因为"\r" 不是您想要的新行字符;))
  • @PaulS。那将是一个很好的答案。
  • 感谢 Paul S. 的回答,现在我明白这是如何工作的了。

标签: javascript node.js console line


【解决方案1】:
process.stdout.write('Downloading ' + i + '% complete... \r');

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

【讨论】:

    【解决方案2】:

    我使用 C/C++ 中的 curses 库完成了这种事情。 有一个等效的节点,称为 node-ncurses,它可能会对您有所帮助。

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

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 1970-01-01
      • 2010-11-25
      • 2015-03-13
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多