在RxJS版本4中,主题上的方法hasObservers似乎已被删除,我正在尝试迁移。此方法删除未列在如何迁移页面上。
hasObservers: function () { checkDisposed(this); return this.observers.length > 0; }
如果主题在调用next之前有一个订阅者,那么获取布尔值的另一个解决方案是什么?
答案 0 :(得分:1)
似乎rxjs 5中没有这个函数的模拟。但你可以添加自己的:
Subject.prototype.hasObservers = function hasObservers() {
if (this.closed) {
throw new ObjectUnsubscribedError();
}
return this.observers.length > 0;
};
答案 1 :(得分:0)
如果你查看源代码如何observers
array is defined,你会发现它是一个公共财产,所以你可以直接访问它:
import { Subject } from 'rxjs/Subject';
let s = new Subject();
s.subscribe(val => val);
s.subscribe(val => val);
console.log(s.observers.length > 0);
这会打印true
。