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.
Odpowiedz
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ń.
- 1. AngularJs - RXJS Obserwowalny wypisanie
- 2. Jak uruchomić i zatrzymać interwał obserwowalny w RXJS?
- 3. Jak działa C-- w porównaniu do LLVM?
- 4. Jak utworzyć strumień obserwowalny RxJS z elementu potomnego szablonu elementu Angular2
- 5. łańcuchowym obserwabli w RxJS
- 6. AngularJS: Basic $ watch not working
- 7. Jak działa program ASP.Net w systemie Linux w porównaniu ze standardowym rozwiązaniem Microsoft-centric?
- 8. HTTP RxJS i AngularJS - jak mogę to osiągnąć?
- 9. $ Wartość zwrotu w oknie Watch nie działa w VS2015
- 10. Jak działa szybkość ironpythona w porównaniu do innych języków .net?
- 11. Procesor aplikacji Java/obciążenie znacznie wyższe w porównaniu do JDK8
- 12. RabbitMQ Wymiana tematów: 1 wymiana w porównaniu do wielu wymian
- 13. Znaczenie X = X [:, 1] w Pythonie
- 14. Jak korzystać z RxJs distinctUntilChanged?
- 15. Osadź aplikację angularjs w innej aplikacji angularjs
- 16. CLI MAMP PHP działa powoli w porównaniu do OS X PHP
- 17. Ionic 1 AngularJs 1 kontra Ionic 2 AngularJs 2?
- 18. Jak dołączyć CSS do ścieżki kontekstu w JSF 1.x?
- 19. Różnica między ~ (x-1) i ~ x + 1, gdy x = 0x80000000
- 20. AngularJS start watch po załadowaniu zawartości
- 21. Karma auto-watch nie działa
- 22. Zmiany śledzenia - obserwowalny element w obserservArray
- 23. Jak działa wywołanie zwrotne w wywołaniu AngularJS do usługi REST?
- 24. Jak wdrożyć gesty shake w aplikacji Apple Watch?
- 25. Jak program Angularjs można zindywidualizować?
- 26. Marionette.js w porównaniu do Chaplin.js
- 27. Jak działa program manage.py?
- 28. Zobacz cały obiekt (głęboki watch) z angularjs
- 29. window.onload nie działa w angularjs
- 30. event.preventDefault() nie działa dla routeChangeStart w angularjs aplikacji
Chciałbym dowiedzieć się więcej o tym również – Ant