需要取消订阅 Firestore/Angularfire2 订阅

Sam*_*ath 4 firebase angularfire2 ionic3 angular google-cloud-firestore

我像这样使用 Firestore。

用例 1:

contacts$: Observable<ContactDetail[]>;

constructor(){    
} 

ionViewDidEnter() {
   this.contacts$ = this.contactProvider.getSpecificUserContacts(this.authenticationProvider.user.uid).valueChanges();
   this.contacts$.pipe(first()).subscribe(res => { },
      err => { },
      () => { }
   );
}
Run Code Online (Sandbox Code Playgroud)

用例 2:

getAllContactCategories() {
    this.categories$ = this.categoryProvider.getAllContactCategories().valueChanges();
    this.categories$.subscribe(res => {
       this.categorySortedList = res;          
    },
      err => { }
    );
}
Run Code Online (Sandbox Code Playgroud)

但我从来没有unsubscribed。那我需要这样做吗?否则,会不会导致内存泄漏并耗尽电池使用量?我知道我们不需要unsubscribed角度HTTP服务,因为它是由框架本身自动完成的。那么 Firestore/Angularfire2observables呢?我从未在firestore书籍或文章或类似的东西中看到过这样的模式。

小智 5

是的,取消订阅订阅的订阅是件好事。你可以试试这个...

  contactsSub: Subscription;
Run Code Online (Sandbox Code Playgroud)

构造函数(){
}

ionViewDidEnter() { ... }

  ionViewDidLeave{
  this.contactsSub.unsubscribe();
  }
Run Code Online (Sandbox Code Playgroud)

来自 angularfire2 代表: https : //github.com/angular/angularfire2/issues/377

  • 是的,它适用于任何自定义事件的订阅。我的具体问题是“Firestore/Angularfire2”。使用这种模式对它有任何参考吗? (2认同)