如何在 RxJs 5 中将 Subject 转换为 Observable [英] How to transform a Subject into an Observable in RxJs 5
问题描述
我们如何在 RxJs 5 中将 Subject 转换为 Observable?此功能非常有用,例如,当我们想要公开订阅的主题但不想放弃对其调用 next()
的控制权,并且希望将新值的发布保密.
How can we transform a Subject into an Observable in RxJs 5 ? This functionality is useful for example when we want to expose the Subject for subscription but don't want to yield control of calling next()
on it, and prefer to keep the issuing of new values private.
文档(参见此处) 提到这样的事情:
The docs (see here) mention something like this:
var subject = new Rx.Subject();
var obs = subject.asObservable();
但在 RxJs 5 中,这目前不起作用(alpha 8),我们收到以下错误:
But in RxJs 5 this currently does not work (alpha 8), we get the following error:
"TypeError: subject.asObservable is not a function
推荐答案
RxJS 5 是一个重写(目前处于测试阶段)并且有很多 重命名/删除方法,以及其他更改.删除的其中之一是 asObservable
.
RxJS 5 is a rewrite (currently in beta) and has lots of renamed/removed methods, among other changes. One of the removed ones is asObservable
.
您可以通过使用私有主题的订阅功能创建一个 observable 来获得相同的功能:
You can get the same functionality by creating an observable with the private subject's subscribe function:
const subj = new rx.Subject();
const exposed = new rx.Observable(fn => subj.subscribe(fn));
这篇关于如何在 RxJs 5 中将 Subject 转换为 Observable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!