2017-12-31 343 views
0

を「偽」の代わりにデフォルトの最後の値を送信しているし、これはこれまでのところ、私の観察されています:最初のサブスクリプションでRxjs BehaviorSubject <Boolean>は、私は私のコードでシングルトンインスタンスとしてRxJS BehaviorSubjectを使用しています

  1. が、それはデフォルトを送信します加入者に「偽」の価値があると私は大丈夫だと思っています。
  2. 次に、次の(true)メソッドを呼び出すと、正しい値(true)が送信されます。これも期待されます。
  3. ステップ2の後に新しいサブスクリプションが作成されると、デフォルトの「false」ではなく「true」が送信されます。

これは(ステップ-3で)固まっている場所です。 BehaviorSubjectは、新しいサブスクリプションが作成されたときに最後の値を送信することを認識していますが、ロジックはnext()を使用して送信された最後の値ではなく、初めてサブスクリプションが作成されたときに "false"これをどうすれば実現できますか?

答えて

1

あなたが述べたように、BehaviorSubjectは初期値(デフォルト値ではありません)を取得します。

const someSubject = new Rx.Subject(); 
 
const withSomeDefault = someSubject.startWith('some-default'); 
 

 
withSomeDefault.subscribe(console.log); 
 
someSubject.next('some-other-value'); 
 
withSomeDefault.subscribe(console.log);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.6/Rx.js"></script>

:デフォルト値の場合、あなたは startWith演算子を使用することができます
関連する問題