2015-04-17 13 views
15

Słyszałem od różnych głośników ng, że zegarek $ jest niebezpieczny dla wydajności aplikacji. Zastanawiam się, czy ktoś porównał wydajność RxJ 'Observable przeciwko $ watch w aplikacji AngularJS. Wiem, że Observables będzie częścią Angular 2.

+0

Chciałbym dowiedzieć się więcej o tym również – Ant

Odpowiedz

21

Dwa mechanizmy obserwowania zmian są z natury różne.

$watch to brutalny mechanizm oparty na mechanizmach ciągnięcia. Kiedy obserwator jest aktywny i (ogólnie) musi odwiedzić każdy zaobserwowany obiekt/wyrażenie po każdej zmianie. Na pewno tym bardziej obserwować wolniejszy cały proces.

Observable wdraża mechanizm oparty na pchaniu. Obserwator jest pasywny i otrzymuje powiadomienie, gdy coś się zmieni. Odpowiednio zaimplementowane umożliwia znacznie bardziej inteligentne propagowanie zmian.


Z tego co wiem, używając Observable sw kątowym 2,0 nie jest obowiązkowe, ale zalecane. Co więcej, kątowy 2.0 będzie realizował jednokierunkowy przepływ danych podobny do flux. Zmiany danych propagują się tylko w dół w DOM - komponent może bezpośrednio obserwować/zależeć od danych ich przodków, ale nie od ich potomków. Po zmianie istnieje gwarancja, że ​​tylko niektóre poddrzewa DOM wymagają aktualizacji. W większości przypadków to podtreszczenie będzie znacznie mniejsze niż cały DOM.

Istnieje a great video od 2015 benchmarking ng-conf kątowy 1.x, reagujący i kątowy 2.0. (nie wiem, czy to wykorzystuje obserwable choć)


Ostatnią rzeczą Observable: oferuje bardziej niż w powyższym opisie i jest to świetny sposób radzenia sobie z asynchronicznych zdarzeń.

Powiązane problemy