Ik heb gezocht hoe ik het in andere talen moet doen en ik heb ontdekt dat ik het speciale teken \b moet gebruiken om het laatste teken te verwijderen. (how-do-i-erase-printed-characters -in-a-console-applicationlinux)
Dit werkt niet voor node.js in meerdere oproepen naar console.log ();
Als ik een enkel logboek schrijf:
console.log ("abc\bd");
Ik krijg het resultaat: abd
Maar als ik schrijf:
console.log ("abc");
console.log ("\bd");
Ik krijg het resultaat:
abc
d
Mijn doel is om een wachtend bericht af te drukken zoals:
Wachten
Wachten.
Wachten..
Wachten…
en nogmaals:
Wachten
Wachten.
enz.
allemaal in dezelfde regel.
Antwoord 1, autoriteit 100%
Er zijn functies beschikbaar voor 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);
Het is mogelijk om argumenten te geven aan clearLine(direction, callback)
/**
* -1 - to the left from cursor
* 0 - the entire line // default
* 1 - to the right from cursor
*/
Update13 december 2015: hoewel de bovenstaande code werkt, is deze niet langer gedocumenteerd als onderdeel van process.stdin
. Het is verplaatst naar readline
Antwoord 2, autoriteit 14%
De gemakkelijkste manier om dezelfde regel te overschrijven is
var dots = ...
process.stdout.write('Progress: '+dots+'\r');
de \r
is de sleutel. Het zal de cursor terug naar het begin van de regel verplaatsen.
Antwoord 3, autoriteit 14%
Je zou nu de readline
bibliotheek en de APIom dit te doen.
Antwoord 4, autoriteit 2%
Dit werkt voor mij:
process.stdout.write('\033c');
process.stdout.write('Your text here');
Antwoord 5
Een koetsretour gebruiken
Het regelterugloopteken plaatst de cursor terug aan het begin van de huidige regel.
process.stdout.write("\r");
Deze oplossing werkte voor mij — ik heb hem alleen getest met een enkel teken.
Antwoord 6
Probeer door de \r aan het begin van de string te verplaatsen, dit werkte voor mij in Windows:
for (var i = 0; i < 10000; i+=1) {
setTimeout(function() {
console.log(`\r ${i}`);
}, i);
}