2016-12-31 70 views
1

在RxJS版本4中有hasObjects的方法似乎已被删除,我正在尝试迁移。此方法删除未列在如何迁移页面上。什么替换Subject.prototype.hasObservers

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

什么是另一种解决方案来获得一个布尔值,如果一个主题有一个用户之前下一个被称为?

回答

1

似乎没有模拟在rxjs 5.这个功能但是你可以添加自己:

Subject.prototype.hasObservers = function hasObservers() { 
    if (this.closed) { 
     throw new ObjectUnsubscribedError(); 
    } 

    return this.observers.length > 0; 
}; 
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

+0

请注意,在主题上调用'unsubscribe'后,'observers'等于'null'。 –