Quiero usar combineLatest para obtener un montón de resultados. Luego, uno de los resultados se pasa como parámetro de entrada para hacer otra llamada de suscripción.
combineLatest([first, second, third, four, five]).pipe(take(1)). subscribe(([a, b, c, d, e]) => { this.showData1(a); this.showData2(b); this.showData3(c); this.showData4(d); if(e > 8) { this.myService.updateStatus(e).subscribe( result => this.setupStatus(result) ); } });La lógica es de los 5 resultados, 4 de ellos se utilizan para renderizar la pantalla. El último lo uso para hacer una suscripción, su resultado de retorno se usará en algún lugar.
Pero siento que no está bien porque a veces parece que this.setupStatus(result) no se está ejecutando dentro de combineLatest . ¿Pérdida de memoria?
es difícil diagnosticar por qué no estaría funcionando sin saber más sobre los observables. pero lo haría así para evitar suscripciones anidadas y hacer que esto sea un poco más fácil de diagnosticar/administrar:
combineLatest([first, second, third, four, five]).pipe( take(1), switchMap(([a, b, c, d, e]) => { this.showData1(a); this.showData2(b); this.showData3(c); this.showData4(d); return this.myService.updateStatus(e); }) ).subscribe(result => this.setupStatus(result));posiblemente estructurando un poco diferente dependiendo de cuándo exactamente quiero que sucedan las cosas.