如何将主体转换为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));
答
FYI:Subject.prototype.asObservable()
将在下一版本5.0.0-beta.2
。您可以拨打mySubject.asObservable()
。
+1
现在已经结束并正在工作,TSD也会更新。 – ibgib
对它被删除的原因有所了解,被认为是不好的做法或什么? –
我已添加指向迁移指南的链接。就像我提到的那样,这是一个重写,我想他们想摆脱他们没有看到的常用或必要的东西。他们还提到希望符合es7的可观察性。该页面以关于打开关于缺失功能的问题/ PR的部分结束,因此您可以尝试。 – Mosho
它没有被删除,只是被忽视。它将在下一个版本中发布。 –