使用纯Observable vs数组(来自订阅)

时间:2017-01-03 15:31:02

标签: angular firebase firebase-realtime-database rxjs angularfire2

我想知道使用纯可观察对比订阅可观察对象并使用数组的最佳实践。

选项1 - “纯粹可观察”

this.schools = this.angularFire.database.list('schools') 

然后在HTML中使用异步管道(以及用于处理数据的rxjs运算符)

选项2 - “订阅数组”

this.angularFire.database.list('schools').subscribe (response => this.schools=response) 

然后将其视为普通数组。

1 个答案:

答案 0 :(得分:3)

正如olsn在评论中指出的那样,使用异步管道处理这种情况总是更实际。

但是,如果您出于任何原因选择使用手动订阅方法(在向用户显示数据之前以某种方式在客户端操作数据),您还需要手动取消订阅。

基本上,您需要在组件中编写类似的内容:

ngOnInit(){
this.subscription = this.angularFire.database.list('schools').subscribe(response => this.schools=response) 
}

//then somewhere in your code
ngOnDestroy(){
   this.subscription.unsubscribe();
}

为了避免手动取消订阅以及是否只需要读取一次的数据,您可以使用其中一个可用的运算符,例如take()。

this.angularFire.database.list('schools').take(1).subscribe(response => this.schools=response)

此方法将确保在第一次运行查询后自动取消订阅observable。