2017-01-03 7 views
2

私は、観測可能なものをサブスクライブし、配列を使用して純粋な観測可能なものを使用することに関するベストプラクティスについて疑問を抱いていました。純粋な観測可能なvs配列(サブスクライブから)を使用

オプション1 - "純粋な観察" HTML使用非同期パイプ内

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

した後(及びrxjs演算子データを処理するための)

オプション2 - "アレイにサブスクライブ"

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

とし、それを通常の配列として扱います。

+1

可能な限り、 '| angle2の非同期で、手動での購読を防ぐ! – olsn

答えて

3

コメントでolsnが指摘しているように、この状況を処理するために非同期パイプを使用する方が常に現実的です。

ただし、何らかの理由で手動購読アプローチを使用することを選択した場合(ユーザーに表示する前に何らかの理由でクライアント側でデータを操作する)、手動で購読を解除する必要があります。手動で解除することを避けるために

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

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

、それは一度だけ読まなければならないデータであれば、あなたは1を使用することができます。

基本的に、あなたはあなたのコンポーネント内にこのような何かを書く必要があるでしょうtake()のような、あなたが利用できる演算子の例です。

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

この方法では、最初にクエリを実行した後、自動的にオブザーバブルの登録が解除されます。

+0

ねえ、私はionic2フォーラムで矛盾する答えを持っています..あなたはそれが作業フレームの問題だと思いますか?私は私のアプリで何を実装するか分からないhttps://forum.ionicframework.com/t/using-pure-observable-vs-array-from-subscribe/74997/4 – idosh

+1

さて、非同期パイプは、すべてのオブザーバブルのすべての状態を手動で維持する必要があるということです。 Imoは、非同期パイプを使用することで、特にデータを受け取ったときに何かをフィルタリングや変更する必要がない場合に、すべてをより実用的かつきれいにします。あなたが何かをフィルタリングする必要がある場合、2番目のオプションはより適切と思われる。あなたにとってより意味のあるものを使用してください。 –

関連する問題