2015-04-17 10 views
15

Ho sentito da vari oratori di ng come $ watch è pericoloso per le prestazioni della vostra applicazione. Mi chiedevo se qualcuno ha confrontato le prestazioni di Rxjs 'Observable against $ watch in un'applicazione AngularJS. So che Observables farà parte di Angular 2.

+0

Mi piacerebbe saperne di più a riguardo – Ant

risposta

21

I due meccanismi di osservazione dei cambiamenti sono intrinsecamente diversi.

$watch è una forza bruta, meccanismo a trazione. Dove l'osservatore è attivo e (generalmente) ha bisogno di visitare ogni oggetto/espressione osservato dopo che si è verificato un cambiamento. Sicuramente più osservare più lentamente l'intero processo.

Observable implementa un meccanismo basato su push. L'osservatore è passivo e viene avvisato quando qualcosa è cambiato. Correttamente implementato consente una propagazione delle modifiche molto più intelligente.


Da quello che so, utilizzando Observable s in angolare 2.0 è facoltativo, ma consigliato. Inoltre, angular 2.0 implementerà un flusso di dati unidirezionale simile a flux. Le modifiche dei dati si propagano solo verso il basso nel DOM: un componente può osservare direttamente/dipendere dai dati dei propri antenati ma non dai loro discendenti. Dopo una modifica c'è la garanzia che solo alcuni sottoalberi del DOM devono essere aggiornati. Nella maggior parte dei casi questa sottostruttura sarà molto più piccola dell'intero DOM.

C'è a great video dal 2015 ng-conf benchmarking 1.x angolare, reattivo e angolare 2.0. (non so se si usa osservabili però)


Un'ultima cosa su Observable: offre molto più di quanto sopra descritto ed è un ottimo modo di trattare con eventi asincroni.