如何将主体转换为RxJs中的Observable 5

问题描述:

如何将主体转换为RxJs 5中的Observable?例如,当我们想要公开主题以进行订阅,但不希望控制对其调用next()时,此功能非常有用,并且更愿意将新值的发布保留为私有。如何将主体转换为RxJs中的Observable 5

的文档(见here)提到这样的事情:

var subject = new Rx.Subject(); 

var obs = subject.asObservable(); 

但RxJs 5目前这不起作用(阿尔法8),我们得到以下错误:

"TypeError: subject.asObservable is not a function 

RxJS 5是一个重写(目前处于测试阶段),除了其他变化外,还有很多renamed/removed methods。其中一个被删除的是asObservable

您可以通过创建一个可观察与私主体的订阅功能获得相同的功能:

const subj = new rx.Subject(); 
const exposed = new rx.Observable(fn => subj.subscribe(fn)); 
+0

对它被删除的原因有所了解,被认为是不好的做法或什么? –

+0

我已添加指向迁移指南的链接。就像我提到的那样,这是一个重写,我想他们想摆脱他们没有看到的常用或必要的东西。他们还提到希望符合es7的可观察性。该页面以关于打开关于缺失功能的问题/ PR的部分结束,因此您可以尝试。 – Mosho

+3

它没有被删除,只是被忽视。它将在下一个版本中发布。 –

FYI:Subject.prototype.asObservable()将在下一版本5.0.0-beta.2。您可以拨打mySubject.asObservable()

+1

现在已经结束并正在工作,TSD也会更新。 – ibgib