2016-10-19 15 views
0

Observableの動作を理解しようとしています。これは、angular2 http.get()メソッドから返されたObservableの動作です。 this.shareがtrueで、this.firstHandleは私が期待するよう上記のコードは動作しませんその後、falseの場合は私の関連するコードは...ここ共有観測可能なエラー処理の問題

let observable = this.http.get(this.url) 
if (this.share) { 
    observable = observable.share(); 
} 

if (this.firstHandle) { 
    observable.subscribe(result => { 
    this.result = result._body; 
    }, 
    err => { 
    this.error = err; 
    }); 
} else { 
    observable.subscribe(result => { 
    this.result = result._body; 
    }); 
} 

observable.subscribe(result => { 
    this.result2 = result._body 
}, 
err => { 
    this.error2 = err; 
}) 

です。 2番目のサブスクライブでエラーは処理されません。他のすべてのケースは、私が期待するように動作します。ここには、動作を示すplunkrがあります。最後のケースでは、不正な呼び出しによるエラーは表示されません。この理由を理解しようとするだけです。

ありがとうございます。

答えて

0

私はまだ自分自身を学んでいます。私はshare method in the RxJS libraryを見ていました。初めて購読するときは、実際に新しい購読を作成する唯一の時です。 2度目の購読は、データを共有するだけで、実際には新しい購読をしません。だから私はそれが2番目のサブスクリプションで定義されたエラー処理パラメータを参照しないことを意味すると思います。

+0

しかし、それは奇妙なことです。 ** ** ** ** ** ** ** ** ** ** ** ** ** ** **最初の購読でエラーを処理しても、**私がそうしないと**できません。最初のサブスクライバが他のサブスクライバよりもエラーに興味がない場合に使用されたロジックだったようです。私はそれを理解していない。 – crowmagnumb

+0

シェアはRxJSの目的が異なるかもしれないと思います。私はあなたが探している効果は、Connectable Observableを作成し、その上でPublish演算子を使用している可能性があると思います。再び私は新しいものAngular 2のすべての周りに私の頭を包み込むことを試みるのと同じボートにいる。 – Frank

関連する問題