我从不同的ng-扬声器中听到$ watch对于您的应用程序性能是多么危险。我想知道是否有人在AngularJS应用程序中将Rxjs的Observable与$ watch的性能进行了比较。我知道Observables将成为Angular 2的一部分。
最佳答案
观察变化的两种机制本质上是不同的。$watch
是基于拉力的蛮力机制。观察者处于活动状态并且(通常)在发生任何更改后需要访问每个观察到的对象/表达式的位置。当然,观察得越多,整个过程就越慢。Observable
实现基于推送的机制。观察者是被动的,并在发生更改时得到通知。正确实施后,可以更智能地传播更改。
据我所知,在angular 2.0中使用Observable
是可选的,但建议这样做。而且,角度2.0将实现类似于flux的单向数据流。数据更改仅在DOM中向下传播-组件可以直接观察/依赖其祖先的数据,而不能观察其后代的数据。更改后,可以保证只有DOM的某些子树需要更新。在大多数情况下,此子树将比整个DOM小得多。
2015年ng-conf中有a great video基准测试角度1.x,react和角度2.0。 (虽然不确定是否使用Observables)
关于Observable
的最后一件事:它提供的不仅是上面的描述,而且是处理异步事件的好方法。