반응형
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
반응형
'IT이야기' 카테고리의 다른 글
Redex에서 'mapStateToProps'와 'mapDispatchToProps'의 용도는 무엇인가? (0) | 2022.03.15 |
---|---|
reactj가 있는 링크에 프록시를 사용하는 방법 (0) | 2022.03.15 |
vuex 스토어에서 vue-resource($ttp) 및 vue-router($route)를 사용하는 방법? (0) | 2022.03.15 |
DevTools에서 가비지 관찰 가능 여부를 확인하는 방법 (0) | 2022.03.15 |
반응-원래 스크롤을 평면 리스트를 사용하여 맨 위로 이동 (0) | 2022.03.15 |