我使用AngularFire库从Firebase Realtime数据库中读取数据。下面是我用来订阅实时数据更改的代码
// db is a reference to AngularFireDatabase
this.dbSubscription = db.list('/authors').valueChanges().subscribe(items =>
对于某些用户操作,我必须更改我正在侦听数据的路径。所以代码看起来像这样
this.dbSubscription.unsubscribe();
this.dbSubscription = db.list('/books').valueChanges().subscribe(items =>
是否正在调用this.dbSubscription.unsubscribe();
从数据库中分离应用程序,以便在上一个路径中发生任何数据更改,即/一旦订阅新路径/书籍,作者就不会与应用程序同步?我想确保我不感兴趣的数据不会下载到应用程序中。
答案 0 :(得分:2)
是的!调用取消订阅实际上会调用.off()
方法。你可以看到它here in the source code。
return new Observable<SnapshotPrevKey>(subscriber => {
const fn = ref[listenType](event, (snapshot, prevKey) => {
subscriber.next({ snapshot, prevKey });
if (listenType == 'once') { subscriber.complete(); }
}, subscriber.error.bind(subscriber));
if (listenType == 'on') {
// return a method for unsubscribing the listener
return { unsubscribe() { ref.off(event, fn)} };
} else {
return { unsubscribe() { } };
}
})
答案 1 :(得分:1)
你的想法是正确的。
AngularFire
没有常规JavaScript library之类的off()
等API函数。在JavaScript库中,off()
将用于删除数据库上的侦听器。
使用unsubscribe()
是在AngularFire
中实现目标的正确方法。
可以阅读更多内容here。