【问题标题】:How to check that mobx observable has subscribers?如何检查 mobx observable 是否有订阅者?
【发布时间】:2018-01-14 15:29:00
【问题描述】:

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

例如,我有一些方法:fetchData(),还有一些变量:@observable responseData,并且我只想在 responseData 有订阅者(@reaction 或 @autorun 等消费者)时运行 fetchData()。

如果有方法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();

我想为此找到一种优雅的方式。

有什么想法吗?

【问题讨论】:

标签: javascript angular observer-pattern mobx


【解决方案1】:

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

所以你能做的就是把你的 Observable 变成 Subject 并采取行动。显示你的 Observable 来自哪里,所以也许我可以提供进一步的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-29
    • 2021-03-16
    • 2019-12-03
    • 2016-08-04
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多