如何在RxJs中将主题转换为Observable 5

Ang*_*ity 4 rxjs rxjs5

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

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

var subject = new Rx.Subject();

var obs = subject.asObservable();
Run Code Online (Sandbox Code Playgroud)

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

"TypeError: subject.asObservable is not a function
Run Code Online (Sandbox Code Playgroud)

Ben*_*esh 13

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

那时,你可以打电话mySubject.asObservable().


Mos*_*sho 4

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

您可以通过使用私有主题的订阅函数创建可观察对象来获得相同的功能:

const subj = new rx.Subject();
const exposed = new rx.Observable(fn => subj.subscribe(fn));
Run Code Online (Sandbox Code Playgroud)

  • 它没有被删除,只是被忽略了。它将在下一个版本中出现。 (3认同)