IT이야기

RxJS - 여러 번 호출된 플랫맵 관찰자

cyworld 2022. 3. 15. 20:46
반응형

RxJS - 여러 번 호출된 플랫맵 관찰자

는 플랫맵이 어떻게 작동하는지 이해하려고 노력하고 있다.나는 그것이 관찰할 수 있는 < 관찰할 수 있는 <T>를 다루는 방법이라는 것을 이해한다.

어쨌든, 나는 그것의 행동을 시험하고 있었고, 이것과 씨름했다.

let plusDom = document.querySelector('#plus');
let minusDom = document.querySelector('#minus');

let minusSource = Rx
              .Observable
              .fromEvent(minusDom, 'click');

let plusSource = Rx.Observable
  .fromEvent(plusDom, 'click');

plusSource
  .flatMap(function(c){
    console.log('Flatmap called');
    return minusSource;
  })
  .subscribe(function(e){
  console.log('done');
})

여기 jsbin이 있다: https://jsbin.com/sefoyowuqe/edit?html,js,console,output

나는 이 행동을 이해할 수 없다.

3 clicks on plusDom prints:
Flatmap called
Flatmap called
Flatmap called

-dom 인쇄를 1번 클릭:

done
done
done

빼기Dom을 클릭할 때 더하기Dom을 클릭했을 때 이벤트를 여러 번 재생하는 이유는?

flatMap기본적으로 반환된 하천을 원래의 하천에 평평하게 배치한다.아마도 당신이 찾고 있는 것은switchMap원래 소스가 이전 스트림을 폐기하여 데이터를 방출할 때 반환된 스트림으로 전환하고 새 스트림으로 전환한다.

의심스러울 때, 스위치맵은 일반적으로 가장 안전한 사용 대안이다.

비교는 대리석-다이아그램 참조:

플랫맵은 이전에 "평탄화"된 스트림을 제거하지 않으며:

평면 지도 대리석 다이어그램

스위치맵은 이전에 "스위치된" 스트림을 제거한다.

스위치맵 대리석 다이어그램

참조URL: https://stackoverflow.com/questions/41301853/rxjs-flatmap-observer-called-multiple-times

반응형