Object.observe 退出和 RxJS 和 Angular 2
Posted
技术标签:
【中文标题】Object.observe 退出和 RxJS 和 Angular 2【英文标题】:Object.observe withdrawal and RxJS and Angular 2 【发布时间】:2016-02-11 06:54:04 【问题描述】:我有点困惑,因为Obejct.observe is said to be withdrawn from the ES2016。
另一方面,talks on Angular Connect 提到他们将依赖它。
据我所知,Angular 2 并不直接依赖 Object.observe,而是依赖于使用 Object.observe 的 RxJS
能否请您帮助我了解此次退出的影响? 我也很困惑这将如何影响功能性反应式 javascript 开发。
对不起,如果这是个愚蠢的问题,但所有这些概念对我来说都是新的。
【问题讨论】:
Object.observe
与 Observables
完全没有关系,名称可能会令人困惑,但它们甚至没有关系。
你不是唯一一个感到困惑的人,看到这个issue,你有一个核心团队成员的答案。
我认为 Angular 2 正在使用 Object.observe 和 polyfill docs.google.com/document/d/…
【参考方案1】:
RxJS 不依赖 Object.observe(而且 afaik 不打算在未来这样做),因为 RxJS 本身没有可观察对象的概念(尽管您可以创建具有可观察流作为值的对象)。
对于角度 Object.observe 本来是相关的,但我认为它还没有依赖它(或者至少不在 chrome 之外)。
无论如何,如果您需要可观察的对象,仍然可以使用 Mobservable 库,如blogpost 中所述。
【讨论】:
【参考方案2】:仅供参考.... v4.1.0 在使用 Rx.Observable.ofObjectChanges(obj) 时确实对 Object.observe 有一些依赖...
在 chrome 中自己测试,现在已经删除了对 OO 的支持,如果你使用这种方法创建一个 observable,你会得到一个 OO 错误。
所以虽然是的,但在 RxJS 的上下文中,OO 与 Observables 无关,OO 在 4.1.0 中使用,这是当前稳定的,尚未在 5.XX 中实现(我猜延迟是由于切换到代理)。
所以如果你想使用流和 Rx 模式那么没问题,如果你想使用 RxJS 来观察一个对象,对不起,你将不得不 polyfill Proxy 并使用它,因为 ofObjectChanges 已损坏 ATM 以实现 Chrome 稳定。
【讨论】:
以上是关于Object.observe 退出和 RxJS 和 Angular 2的主要内容,如果未能解决你的问题,请参考以下文章
[ES7] Object.observe + Microtasks