如何检查 mobx observable 是否有订阅者?

How to check that mobx observable has subscribers?

如何检查 mobx observable 是否有订阅者? 或者观察者获取订阅者时如何获取事件?

例如,我有一些方法:fetchData(),和一些变量:@observable responseData,我想 运行 fetchData() 只有当 responseData 有订阅者(消费者喜欢@反应或@auto运行).

如果有方法就好了isObservableHasSubscribers(observableVar);

完整代码示例(堆栈:Angular 和 Mobx):

SomeStore {
    @observable responseData;

    fetchData(){
       if(/* check? */) return; // <- here need some Check ????

       fetchDataFromServer().then((d)=>{
          this.responseData = d;
       })
    }
}

const store = new SomeStore();
let unimportant;

// this is optional consumer (subscriber)...
autorun(() => {
   unimportant = store.responseData;
});

store.fetchData();

我想为此找到一个优雅的方法。

有什么想法吗?

很确定这是不可能的。 Observables 不持有任何状态。但是主题会。在以前的 RxJs 版本中有像 subject.hasObservers() 这样的方法,但在 RxJs 5 中它们被删除了。然而,有一个 属性 计算观察者 - subject.observers.length.

所以你可以做的是将你的 Observable 变成 Subject 并对其进行操作。显示您的 Observable 的来源,这样也许我可以提供进一步的帮助。