programing

관측 가능한 .do() 연산자(rxjs)의 사용 사례

padding 2023. 6. 17. 08:45
반응형

관측 가능한 .do() 연산자(rxjs)의 사용 사례

컨텍스트:

저는 각진 2 앱(파이어베이스 API 포함)을 만들고 있습니다.Angular Fire 모듈을 사용하고 있습니다.어떻게 섞을 수 있는지 궁금해서요.canActivateAngular Fire Auth Observable을 사용하는 방법을 찾았습니다.답은 다음을 만드는 것입니다.canActivate메소드가 반환합니다.Observable<boolean>:

canActivate(): Observable<boolean> {
  return this.auth
    .take(1)
    .map((authState: FirebaseAuthState) => !!authState)
    .do(authenticated => {
      if (!authenticated) this.router.navigate(['/login']);
    });
}

내가 관찰 가능한 것을 보는 것입니다.do교환원, 그리고 나는 그것이 실제로 무엇을 하는지 이해할 수 없습니다.공식적인 의사는 저를 도와주지 않았고, 저는 괜찮은 사례를 찾지 못했습니다.

질문:.

누가 여기에 몇 가지 예를 들어줄 수 있습니까?.do()사용법?그리고 다른 점은.subscribe()?

갱신하다

이제는pipe( tap(...), )대신에do()

원래의

.do()각 이벤트에 대해 코드를 실행하는 것입니다.에의 차이점.map()즉, 의 반환 값입니다..do()무시되며 가입자가 받는 값은 변경되지 않습니다.

이제는pipe( tap(...), )대신에do()

const source = of(1, 2, 3, 4);
source.pipe(
  tap(val => console.log('I am tap: ',val)),
  filter(val =>  val > 2),
  map(val => val + 1)).subscribe((val) => {
  console.log('I am subscriber value after filtering: ', val);
});

출력:

I am tap:  1
I am tap:  2
I am tap:  3
I am subscriber value after filtering:  4
I am tap:  4
I am subscriber value after filtering:  5

*탭 오퍼레이터는 아무것도 수정하지 않습니다, 단지 스트림을 보기 위한 것이라고 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/40957381/use-case-of-observable-do-operator-rxjs

반응형