Uczę się RxJS czytając ten samouczek http://reactive-extensions.github.io/learnrx/
.Co oznacza metoda `map` w RxJS?
Mam problem ze zrozumieniem metody map z Observable
. Wersja Array
jest bardzo prosta i prosta. Nie mam pojęcia, co dokładnie oznacza map
w przypadku Observable
(i dlaczego ma on alias o nazwie select
?!).
Oto, co napisała mi dokumentacja. Może nie być pomocna dla większości początkujących ...
Projektuje każdy element obserwowalnej sekwencji w nowy formularz poprzez włączenie indeksu elementu. To jest alias dla wybranej metody.
Nie rozumiem map
w kontekście event
. Na przykład poniższy kod działa dokładnie tak, jak się spodziewałem. Myślałem o tym kodzie jako: "Posłuchaj click-event
ze strumienia zdarzeń #btn
".
var btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
observable = btnClicks.subscribe(function(e) {
\t console.log(e);
});
Ale co się dzieje, gdy staje się to ??
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);
});
Co Myślałem jest użyć map
przekształcić kolekcję Click zdarzenia do innej kolekcji event-kolekcji. filter
jest łatwy do zrozumienia, tak jak słowo filter
oznacza, weź wydarzenie tylko mnie interesuje i pomiń innych. Ale co powiesz na map
w kontekście event
? Jeśli oznacza to "przekształć kolekcję na inną", tak samo jak wersję tablicową, dlaczego wciąż strzela, gdy kliknięto #btn
?
Chodzi mi o to, że zmapowałem to do innych kolekcji, teraz to już nie jest zbiór zdarzeń kliknięcia #btn
, ale jest to nowa kolekcja czegoś ... Ale nadal strzela, gdy kliknęłam #btn
, co nie ma sensu dla mnie .
Dzięki! Teraz wiem, dlaczego niektóre metody mają alias. Ale nadal nie mogę zrozumieć operacji 'map' w kontekście' zdarzenia'. Zmieniłem to pytanie, mam nadzieję, że możesz mi odpowiedzieć, co znaczy mapa, kiedy zajmujesz się wydarzeniami. – yaquawa
@ Brandon, ale kiedy funkcja iteracji mapy? Kiedy mapujesz na tablicy, masz już wszystkie elementy w tablicy i iteruje log (n) razy przez każdy z elementów. Kiedy .map na Obserwowalne, czy obserwowalne już otrzymało wszystkie elementy (i iteruje przez każdą z nich) lub czy funkcje (w bloku mapy) działają na każdym elemencie (zdarzeniu), jaki przybył? Czy w przypadku Observables mapa działa jako iterator (tak jak w przypadku normalnych tablic), czy też jest bardziej dekoratorem dla każdego zdarzenia (elementu) do przejścia? –
@BenjaminMcFerren Observables są oparte na push (źródła danych * push * dla subskrybentów (za pośrednictwem dowolnych operatorów takich jak 'map'), gdy dane stają się dostępne). Tak więc, w waszym żargonie, obserwowalne podmioty są jak dekoratorzy wydarzeń. – Brandon