2012-04-06 4 views
6

Ist es möglich, Protokollierung auf der Konsole synchron zu machen? Ich stoße oft auf Situationen, in denen die Codeausführung schneller ist als das Dumping der Strukturen. Dies löst die Ausgabe bereits geänderter Objekte.Synchrone Konsolenprotokollierung in Chrome

Ich kann sicher durch den Code mit Debugger gehen, Unit-Tests usw. machen, es ist einfach oft einfach console.log Sachen, nur um eine allgemeine Vorstellung davon zu machen, was vor sich geht.

Antwort

10

Sie können eine Kopie des Objekts erstellen, bevor es zu console.log vorbei. Suchen Sie here nach einer Funktion zum Erstellen einer tiefen Kopie Ihres Objekts.

Edit:

Jetzt in Chrome implementiert, siehe here

+0

Okay, danke, das klingt machbar. Obwohl ich es vorziehen würde, das ursprüngliche Konsolen-Dumping einfach zu überschreiben, so dass es eher blockiert als asynchron ist. –

+0

Das Problem besteht darin, dass das Objekt per Referenz an die Konsole übergeben wird. Wenn Sie später das Objekt ändern, ändert sich auch die Ausgabe in der Konsole. – Fox32

+0

Oh, ich verstehe ... Ich dachte, es macht einen Schnappschuss. In diesem Fall scheint das Klonen des Objekts die einzige Lösung zu sein. Danke noch einmal. –

2

Setzen Sie einen Haltepunkt (siehe Bild unten) in die console.log-Anweisung und verwenden Sie die Steuerelemente, um zum nächsten zu gelangen.

enter image description here

+0

Danke, aber ich weiß, dass ich mit dem Debugger durch den Code gehen kann. Ich habe das sogar in der ursprünglichen Frage gesagt. –

7

Ich wurde gerade von diesem Verhalten gefangen, einige Stunden damit verbracht, bis ich die Konsole realisiert borked ist nicht mein Code. Verdammt.

Bisher konnte ich nur mit dem erwarteten Verhalten erhalten:

console.log(JSON.stringify(obj)) 

schöner Nebeneffekt ist es, die Objekte wie {: "a", 3: 0 "b"} erweitert

+0

Oh, das repariert eigentlich alles ganz nett. Dank dafür :) –