Wie funktioniert ImmutableJS mit Angular 2?

8

Ich verwende ImmutableJS mit Angular 2 seit einiger Zeit, weil es bei der Erkennung von Änderungen Leistungsvorteile bringt. Siehe hier.

Ich bin mir jedoch nicht ganz sicher, warum Immutable standardmäßig mit Angular 2 arbeitet. Wie kann es über die Werte iterieren und diese anzeigen, wenn kein explizites Array vorhanden ist? Ruft es toJS() jedes Mal auf, wenn es auf die Werte der Sammlung zugreift? Implementiert es eine Art von Methode, die Angular 2 automatisch aufruft?

Und wenn ja, gibt es eine Möglichkeit, eigene Kollektionen zu definieren, die diese Methode ebenfalls implementieren?

Ein Beispiel:

%Vor%     
Luka Jacobowitz 14.03.2016, 15:03
quelle

1 Antwort

5

Ich bin kein Angular-Benutzer, aber ich denke, es ist ziemlich einfach zu sehen, was darunter passiert: Ich nehme an, dass

%Vor%

wird in ein Äquivalent von for..of cycle umgewandelt. Dieses Konstrukt kann für die Iteration über Arrays verwendet werden, kann aber auch mit allen iterierbaren Methoden verwendet werden. (Und ja, immutable.List implementiert das iterierbare Protokoll korrekt)

Einige gute Ressourcen:

iterables Protokoll zu SO:

Prüft, ob etwas iterierbar ist

iterables Protokoll in der Tiefe:

Ссылка

Endlich:

Wenn Sie 100% sicher sein möchten, erstellen Sie eine einfache Struktur, die iterierbar ist, aber weder Array noch Immutable.List . Angular kann also nicht iterieren, sondern iterbares Protokoll verwenden (erfordert babel oder neue Version von node ):

%Vor%

Wenn Sie nun diese Struktur anstelle von immutable.List verwenden, können Sie leicht erkennen, dass der Iterator aufgerufen wird.

    
Tomas Kulich 25.03.2016, 17:48
quelle