我在我的代码中使用RxJS BehaviorSubject作为单例实例,这是我迄今为止的观察结果:
这就是我陷入困境的地方(步骤3)。 我意识到在创建新订阅时,BehaviorSubject会发送最后一个值但我的逻辑要求我在第一次订阅时收到“false”而不是使用next()发送的最后一个值。我怎样才能做到这一点?
答案 0 :(得分:1)
正如您所说,BehaviorSubject获取初始值(而不是默认值)。对于默认值,您可以使用 startWith 运算符:
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>
&#13;