Was bedeutet die "Karte" - Methode bedeutet in RxJS?
Ich Lerne RxJS durch das Lesen dieses tutorial http://reactive-extensions.github.io/learnrx/
.
Ich habe eine harte Zeit zu verstehen die anzeigen Methode der Observable
. Die Array
version von map
ist wirklich einfach und unkompliziert. Ich habe keine Ahnung, was genau die map
bedeutet, dass bei einem Observable
(und warum hat es einen alias mit dem Namen select
?!).
Hier ist, was in der Dokumentation erzählt Sie mir. Ist vielleicht nicht hilfreich für die meisten Anfänger...
Projekte jedes element eine beobachtbare Sequenz in eine neue form durch die Einbeziehung des Elements index. Dies ist ein alias für den select-Methode.
Ich verstehe nicht map
im Rahmen der event
.
Zum Beispiel, der code unten funktioniert genau das, was ich erwartet hatte. Ich dachte, dieses Stück code wie : "Hört auf die click-event
aus dem event-stream von #btn
".
JS:
var btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
observable = btnClicks.subscribe(function(e) {
console.log(e);
});
Aber was passiert, wenn es wird, um den das??
JS:
var btn2Clicks, btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
btn2Clicks = Rx.Observable.fromEvent($('#btn2'), "click");
observable = btnClicks.map(function(e) {
return btn2Clicks;
}).subscribe(function(e) {
console.log(e);
});
Was ich dachte, ist das map
zu verwandeln, eine Sammlung von ein click-Ereignis, um eine Sammlung von event-collection.
Die filter
ist leicht zu verstehen, es nur als das Wort filter
bedeutet, nehmen Sie die Veranstaltung nur ich interessiert, überspringen und andere. Aber wie über die map
im Rahmen der event
? Wenn es bedeutet, 'zu verwandeln-eine Kollektion, die anderen lieben' wie bei der array-version, warum es immer noch feuert, wenn #btn
geklickt??
Ich meine, ich ' V zugeordnet, die es zu anderen Sammlungen, jetzt ist es nicht mehr eine Sammlung von click-Ereignis der #btn
aber es ist eine neue Kollektion von sowas... Aber es immer noch feuert, wenn #btn
geklickt, die keinen Sinn für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
map
funktioniert genau das gleiche für Observablen wie für arrays. Verwenden Siemap
zu verwandeln, eine Sammlung von Elementen in einer Sammlung von verschiedenen Artikeln. Es hilft, wenn Sie denken, dass der eine Beobachtbare als eine Sammlung von Elementen (genau wie ein array ist auch eine Sammlung von items), zumindest aus der Beobachter Sicht.Nehmen wir zum Beispiel diese 2 Methoden, die Sie schrieb, um den Einsatz mit einigen arrays:
Können Sie diese gleichen Funktionen für ein beobachtbares:
Dies ist möglich, weil RxJs observablen Umsetzung der array Operatoren wie
map
undfilter
zu haben, die genau die gleiche Semantik wie für arrays. Wenn Sie wissen, wie Sie arbeiten für arrays, dann wissen Sie, wie Sie Arbeit für observablen.Diesem trick ist das Ergebnis der duale Natur der observablen und enumerables.
Wenn Sie sich durch das interaktive tutorial, das Sie anzeigen, die es eigentlich führt Sie durch diesen Prozess. Ich glaube, es beginnt Sie durch das schreiben von map-Operatoren für arrays und dann in einem späteren tutorial schleicht sich ein spürbarer als in der Quelle.
P. S.
Es ist ein alias für
select
wegen seiner Geschichte: Reactive Extensions wurde erstmals umgesetzt .NET und später eine Portierung auf andere Sprachen. Rx.NET verwendet die gleichen Operatoren verwendet werden .NET ist LINQ (seitIObservable
ist der dual vonIEnumerable
). LINQ-Karte-operator, ist bekannt alsSelect
(und seine filter-operator ist bekannt alsWhere
). Diese Namen kommen von LINQ ist Entstehung. Eines der Ziele bei der LINQ gebaut wurde, war es möglich, Datenbankabfragen zu schreiben in C#. So beschlossen Sie SQL-Namenskonventionen für viele der Operatoren (LINQ WÄHLEN Sie Karten direkt auf SQL-SELECT -, LINQ, WO Karten zu SQL, WO, etc).map
Betrieb im Rahmen derevent
. Ich bearbeitet die Frage, hoffe, Sie können mir Antworten, was bedeutet die Karte bedeuten, wenn Sie den Umgang mit Ereignissen.map
) wie die Daten zur Verfügung stehen ). Also, ja, in Ihrem Sprachgebrauch, die Beobachtbaren Operatoren werden wie event-Dekorateure.Karte in Rxjs verwendet für die Projektion, bedeutet, Sie verwandeln können, die Reihe in der völlig neuen array. Um zu verstehen, wie die Karte funktioniert , können wir die Umsetzung unserer eigenen map-Funktion mithilfe von plain javascript.
Können Sie sehen, dass ich geschrieben habe, eine map-Funktion, die akzeptiert, dass eine anonyme Funktion als parameter. Dies wird Ihre Funktion zum anwenden der Projektion zu transformieren des Arrays. Innerhalb der map-Funktion können Sie sehen, Durchlaufen jedes Element in einem array , rufen Sie die Projekt-Funktion durch die übergabe jedes Element, und schließlich das Ergebnis der Projektion-Funktion drücken, um die array-Ergebnisse.
Ausgabe