Angular: Subject - flatMap problem

Angular: Subject - flatMap problem
BL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam serdecznie,
mam problem z Subject RXJS.

Kopiuj
this.subjectService.createNext(this.service.getData(''1")  /* 1 = pageNumber
this.subjectService.createNext(this.service.getData(''2")  /* 2 = pageNumber
this.subjectService.createNext(this.service.getData("3")  /* 3 = pageNumber

W pewnym komponencie wywołuję 3 metody next (trzeba pobrać zawartość 3 stron API, każda po 10 values).
W innym komponencie jest .subscribe do Subject.

Jeżeli nie dodam flatMap:
.pipe(flatMap(res => res).subscribe ...
dostaje osobno 3 strony poprzez 3 osobne observables (dobrze rozumiem?)
ale ...
wtedy wszystko jest widziane jako "... Observable _isScalar ...", nie jako lista values.

Jeżeli dodam flatMap:
wtedy wszystkie 3 strony są spłaszczone jako jeden Observable i oczywiście dostaje values z 3 stron z API ale:
this.subjectService.createNext(this.service.getData("3")
dostaje tylko liczbę "3" - ostatni wywołany createNext().
gdy mapuję console.log(pageNumber) wypisuje mi:

Kopiuj
>>3
>>3
>>3
zamiast
>>1
>>2
>>3

jak to ma miejsce gdy nie użyje flatMap w pipe()

Czy ktoś może wie jak rozwiązać problem by dane pobierane były widziane jako value_array (działa gdy użyje flatMap) i jednocześnie by nie spłaszczało (1,2,3 zamiast 3,3,3)

AI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 375
0

Rxjsa sam się dopiero uczę, ale próbowałeś z Observables.forkJoin + combineLatest?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.