什么取代了Subject.prototype.hasObservers

时间:2016-12-31 17:30:49

标签: javascript typescript rxjs5

在RxJS版本4中,主题上的方法hasObservers似乎已被删除,我正在尝试迁移。此方法删除未列在如何迁移页面上。

hasObservers: function () { checkDisposed(this); return this.observers.length > 0; }

如果主题在调用next之前有一个订阅者,那么获取布尔值的另一个解决方案是什么?

2 个答案:

答案 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