Rxjs BehaviorSubject <boolean>正在发送最后一个值而不是默认的“false”

时间:2017-12-31 19:42:24

标签: rxjs observable behaviorsubject

我在我的代码中使用RxJS BehaviorSubject作为单例实例,这是我迄今为止的观察结果:

  1. 在第一次订阅时,它会向订阅者发送一个默认的“false”值,我认为这是可以预期的。
  2. 接下来当我调用next(true)方法时,它会发送正确的值(true)。这也是预期的。
  3. 现在,当在第2步之后进行新订阅时,它会发送“true”而不是默认的“false”。
  4. 这就是我陷入困境的地方(步骤3)。 我意识到在创建新订阅时,BehaviorSubject会发送最后一个值但我的逻辑要求我在第一次订阅时收到“false”而不是使用next()发送的最后一个值。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

正如您所说,BehaviorSubject获取初始值(而不是默认值)。对于默认值,您可以使用 startWith 运算符:

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

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