如何检查 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 的来源,这样也许我可以提供进一步的帮助。
如何检查 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 的来源,这样也许我可以提供进一步的帮助。