79

私は他の言語でそれを行う方法を探していましたが、特殊文字 \b を使用して最後の文字を削除する必要があることがわかりました。(コンソールアプリケーションで印刷された文字を消去する方法 Linux )

これは、console.log () への複数の呼び出しで node.js に対しては機能しません。

単一のログを書く場合:

console.log ("abc\bd");

結果が得られます:abd

しかし、私が書くと:

console.log ("abc");
console.log ("\bd");

私は結果を得る:

abcd
_

私の目標は、次のような待機メッセージを出力することです。

待っ
てます。
待って..
待って..

そしてまた:

待っ
てます。

すべて同じ行にあります。

4

6 に答える 6

137

利用可能な関数がありますprocess.stdout

var i = 0;  // dots counter
setInterval(function() {
  process.stdout.clearLine();  // clear current text
  process.stdout.cursorTo(0);  // move cursor to beginning of line
  i = (i + 1) % 4;
  var dots = new Array(i + 1).join(".");
  process.stdout.write("Waiting" + dots);  // write text
}, 300);

に引数を提供することが可能ですclearLine(direction, callback)

/**
 * -1 - to the left from cursor
 *  0 - the entire line // default
 *  1 - to the right from cursor
 */

2015年12月13日更新:上記のコードは機能しますが、の一部として文書化されなくなりましprocess.stdinた。に移動しましたreadline

于 2012-07-22T14:14:34.100 に答える
19

同じ行を上書きする最も簡単な方法は

var dots = ...
process.stdout.write('Progress: '+dots+'\r');

\r鍵です。カーソルを行頭に戻します。

于 2015-09-25T15:33:14.940 に答える
-3

文字列の先頭にある \r を移動してみてください。これは Windows で機能しました。

for (var i = 0; i < 10000; i+=1) {
    setTimeout(function() {
        console.log(`\r ${i}`);
    }, i);
}
于 2016-02-18T11:02:59.680 に答える