node.js - readfilesync - readfile javascript
Cómo borrar caracteres impresos en consola. (5)
He estado buscando cómo hacerlo en otros idiomas y he encontrado que tengo que usar el carácter especial / b para eliminar el último carácter. ( how-do-i-erase-printed-characters-in-a-console-applicationlinux )
Esto no funciona para node.js en múltiples llamadas a console.log ();
Si escribo un solo registro:
console.log ("abc/bd");
Me sale el resultado: abd
Pero si escribo:
console.log ("abc");
console.log ("/bd");
Me sale el resultado:
a B C
re
Mi objetivo es imprimir un mensaje de espera como:
Esperando
Esperando.
Esperando..
Esperando...
y otra vez:
Esperando
Esperando.
etc
todo en la misma linea
Ahora puedes usar la biblioteca readline
y su API para hacer esto.
Esto funciona para mí:
process.stdout.write(''/033c'');
process.stdout.write(''Your text here'');
Hay funciones disponibles para 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);
Actualización del 13 de diciembre de 2015: aunque el código anterior funciona, ya no se documenta como parte de process.stdin
. Se ha movido a readline
La forma más fácil de sobrescribir la misma línea es
var dots = ...
process.stdout.write(''Progress: ''+dots+''/r'');
la /r
es la clave. Moverá el cursor de nuevo al principio de la línea.
Pruebe moviendo la / r al principio de la cadena, esto funcionó en Windows para mí:
for (var i = 0; i < 10000; i+=1) {
setTimeout(function() {
console.log(`/r ${i}`);
}, i);
}