각도와 Rx를 처음 접한다면 이걸 조금 이해하려고합니다 ... 내 앱이 UI 이벤트에 반응하여 Observable을 반환하는 HTTP 서비스를 호출하게됩니다. switchmap과 다른 관찰 가능
this.myXYZService.search(query)
.map(r => { // some code })
.subscribe(r => { //some code });
해당 이벤트가 다시 트리거 말과는 첫번째 호출 완료되기 전에 관찰 가능한 새로운 브랜드를 반환합니다 같은 HTTP 서비스에 두 번째 호출을 만드는 결과 : 그래서처럼 가입.
이제 내가 이해 한대로 map 대신 switchMap을 사용하여 이전 Observable을 삭제하고 새로운 Observable에서 작동 할 수 있습니까? 아니면 이것을 잘못 이해하고 있습니까? 첫 번째 이벤트가 이미 체인의 가입 부분에있는 경우 두 번째 이벤트가 트리거되면 어떻게됩니까? 이 경우 더 이상 전환하지 않습니다. 그리고 JS가 동기 적이기 때문에 2 차 이벤트가 체인 처리를 시작하기 전에 전체 1 차 체인이 실행되지 않을까요?
Observables의 인스턴스가 다르기 때문에 나는 혼란스러워합니다. Rx가 전환 호출을 어떻게 추적합니까? 함수 이름에 의한 것입니까? 두 개의 코드 블록이 있다고 가정 해보십시오.
this.myXYZService.search('abcd')
.map(r => { // some code })
.subscribe(r => { //some code });
this.myXYZService.search('efgh')
.map(r => { // some code })
.subscribe(r => { //some code });
위에서 switchMap을 정확히 사용하면 어떻게됩니까? 두 번째 전화가 첫 번째 전화를 취소합니까?
'취소됨'이라는 문안이 좋습니다. 네트워크 탭에 취소라고 표시되어 사람들이 종종이 용어를 사용한다고 생각합니다. 실제로 전화가 계속 울리면 클라이언트는 청취를 멈 춥니 다. – LLai
감사합니다. 따라서이 경우 searchTerms는 바깥 관찰 가능에있게됩니다. – SBKDeveloper
@ 엘리제 여기 switchMap과 flatMap, concatMap에 대한 좋은 [article] (https://tolikcode.github.io/post/rxjsMap/)입니다. 기술적으로 이들 모두는 관측 대상을 연속적으로 연결하는 데 사용할 수 있습니다. 그러나 내부 관측 가능은 조작자에 따라 다르게 반응합니다. switchMap을 사용하면 이전의 내부 관찰 가능 항목은 외부 관찰 항목이 방출 될 때 삭제됩니다. 그래서 어떤면에서 새로운 것을 만들 때 내부 관측 가능 (Outer Observable이 방출 할 때)을 "전환"하고 있습니다. – LLai