2017-12-31 120 views
0

을 "false"로 대신 기본의 마지막 값을 보내는이 지금까지 내 관찰하고있다 : 첫째 가입에Rxjs BehaviorSubject <Boolean> 내가 내 코드에서 싱글 인스턴스로 RxJS BehaviorSubject을 사용하고

  1. 그것은 기본을 전송 가입자에게 "거짓"값을주었습니다. 나는 괜찮다고 생각합니다.
  2. 다음으로 다음 (true) 메서드를 호출하면 올바른 값 (true)이 전송됩니다. 이것은 또한 예상된다.
  3. 2 단계 후에 새 구독이 만들어지면 기본 "false"대신 "true"가 전송됩니다.

여기가 제가 붙어 있습니다 (3 단계에서). BehaviorSubject가 새로운 구독이 만들어지면 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 연산자를 사용할 수 있습니다