1 rxjs firebase google-cloud-firestore
我编写了一个函数,它返回一个包装 firestoreonSnapshot方法的可观察对象。
function getObservable() {
return Observable.create(observer => {
firebase.firestore().collection('users').onSnapshot(
snapshot => observer.next(snapshot.docs),
);
});
})
}
Run Code Online (Sandbox Code Playgroud)
我可以使用此功能并获取更新的文档,如下所示
const observable = getObservable()
const subscription = observable.subscribe(users => console.log('users'));
Run Code Online (Sandbox Code Playgroud)
如果我现在调用该subscription.unsubscribe()方法,我将取消订阅。但是,我不会订阅听众onSnapshot。
有没有什么方法可以让当我取消订阅可观察对象时,我会自动取消订阅该onSnapshot方法。
来自 RxJS 文档(http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-create):
onSubscription可以选择使用 unsubscribe 方法返回函数或对象。在这两种情况下,当取消对 Observable 的订阅时,都会调用函数或方法,并且应该用于清理所有资源。因此,例如,如果您在自定义 Observable 中使用 setTimeout,当有人取消订阅时,您可以清除计划的超时,这样它就不会不必要地触发,并且浏览器(或其他环境)不会在没有人的计时事件上浪费计算能力无论如何都会听。
所以,如果我理解正确的话,你可能想尝试类似的事情
function getObservable() {
return Observable.create(observer => {
const unsubscribe = firebase.firestore().collection('users').onSnapshot(
snapshot => observer.next(snapshot.docs),
);
return unsubscribe;
});
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |