469 Stimmen

Unterschied zwischen "process.stdout.write" und "console.log" in node.js?

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?

12voto

Nova Punkte 1710

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.

2voto

Rishu Anand Punkte 39

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.

1voto

Sky Voyager Punkte 11257

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 :

-1voto

ascii Punkte 1

console.log() fügt eine Menge Dinge hinzu und bei jedem Aufruf eine neue Zeile

process.stdout.write() ist nur einfacher Text, keine Formatierung

So wurde es mir zumindest beigebracht.

-3voto

suchislife Punkte 3292

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

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.

Powered by:

X