5

我们如何在 RxJs 5 中将 Subject 转换为 Observable?此功能很有用,例如,当我们想要公开订阅主题但不想让出next()对它的调用控制权,并且更愿意保持新值的发布为私有时。

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

var subject = new Rx.Subject();

var obs = subject.asObservable();

但是在 RxJs 5 中这目前不起作用(alpha 8),我们得到以下错误:

"TypeError: subject.asObservable is not a function
4

2 回答 2

13

仅供参考:Subject.prototype.asObservable()将在下一个版本中5.0.0-beta.2

那时,您只需调用mySubject.asObservable().

于 2016-02-05T20:09:22.020 回答
4

RxJS 5 是一个重写版本(目前处于测试阶段),并且有许多重命名/删除的方法,以及其他更改。其中一个被删除的是asObservable.

您可以通过使用私有主题的 subscribe 函数创建一个 observable 来获得相同的功能:

const subj = new rx.Subject();
const exposed = new rx.Observable(fn => subj.subscribe(fn));
于 2016-01-29T22:18:53.757 回答