Was ist der Unterschied zwischen "process.stdout.write" und "console.log" in node.js?
EDIT: Die Verwendung von console.log für eine Variable zeigte eine Menge unlesbarer Zeichen, während process.stdout.write ein Objekt anzeigte.
Warum ist das so?
Was ist der Unterschied zwischen "process.stdout.write" und "console.log" in node.js?
EDIT: Die Verwendung von console.log für eine Variable zeigte eine Menge unlesbarer Zeichen, während process.stdout.write ein Objekt anzeigte.
Warum ist das so?
Ich habe gerade bemerkt, etwas bei der Erforschung dieser nach immer Hilfe mit https.request für Post-Methode. Dachte, ich teile einige Eingabe zu helfen, zu verstehen.
process.stdout.write
fügt keine neue Zeile ein, während console.log
tut, wie andere bereits erwähnt haben. Aber es gibt auch etwas, das sich leichter mit Beispielen erklären lässt.
var req = https.request(options, (res) => {
res.on('data', (d) => {
process.stdout.write(d);
console.log(d)
});
});
process.stdout.write(d);
werden die Daten ohne Zeilenumbruch korrekt gedruckt. Allerdings console.log(d)
wird eine neue Zeile gedruckt, aber die Daten werden nicht korrekt angezeigt, was zu folgendem Ergebnis führt <Buffer 12 34 56...
zum Beispiel.
Anfertigen console.log(d)
um die Informationen korrekt anzuzeigen, müsste ich dies tun.
var req = https.request(options, (res) => {
var dataQueue = "";
res.on("data", function (d) {
dataQueue += d;
});
res.on("end", function () {
console.log(dataQueue);
});
});
Also grundsätzlich:
process.stdout.write
gibt die Informationen kontinuierlich als die abgerufenen Daten aus und fügt keine neue Zeile hinzu.
console.log
druckt die zum Zeitpunkt des Abrufs erhaltenen Informationen aus und fügt eine neue Zeile hinzu.
So kann ich es am besten erklären.
Der einfache Unterschied ist: console.log() Methoden automatisch ein neues Zeilenzeichen an. Das heißt, wenn wir eine Schleife durchlaufen und das Ergebnis drucken, wird jedes Ergebnis in einer neuen Zeile gedruckt.
process.stdout.write() Methoden fügen keine neuen Zeilenzeichen an. nützlich für das Drucken von Mustern.
Console.log implementiert process.sdout.write, process.sdout.write ist ein Puffer/Stream, der direkt in Ihre Konsole ausgegeben wird.
Meinem Mops zufolge serverline : console = new Console(consoleOptions)
können Sie die Klasse Console mit Ihrer eigenen Klasse umschreiben readline System.
Sie können den Quellcode von console.log sehen:
Mehr sehen :
Für diejenigen, die gerne Deno Ich konnte dies durch folgende Maßnahmen erreichen ANSI-Escape-Sequenzen in Verbindung mit Deno's Version von process.stdout.write
.
ESC[2K clears entire line
ESC[#G moves cursor to column #
Code
/*
Console.log() to the same line
Supported in Deno 1.8.1
*/
const myTextEncoder : TextEncoder = new TextEncoder();
let counter : number = 0;
while(counter < 100000) {
// ESC[2K clears entire line
await Deno.stdout.write(myTextEncoder.encode(`\x1b[2K`));
// ESC[#G moves cursor to column #
await Deno.stdout.write(myTextEncoder.encode(`\x1b[0G`));
// OUTPUT incremented counter
await Deno.stdout.write(myTextEncoder.encode(`COUNTER: ${counter++}`));
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.