Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

295
Vistas
Rxjs combineLatest devuelve el observable en la suscripción

Estoy tratando de obtener Userid y serviceId después de que necesito recibir una llamada basada en el userid, el problema de serviceId aquí es que no está devolviendo el observable a ts.

Servicio.ts

 function getData():observable<any>{ combineLatest([ this.activeSellService.getActiveSellServiceId(), this.authService.getUserId(), ]).subscribe(([serviceId, userId]) => { if (serviceId&& userId) { const Url = 'users/' + `${userId}` + '/services/' + `${serviceId}` + '?value=test return this.http.get<any>(this.endPoint.getUrl(encodeURI(Url))); } }) }

Componente.ts:

 this.service.getData().subscribe(data=>{console.log(data));

Incluso no imprime los datos en la consola porque el servicio no está volviendo observable. amablemente ayúdame con este problema. de lo contrario, ¿podemos ir con diferentes soluciones en rxjs?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

probar esto

 function getData():observable<any>{ return combineLatest( this.activeSellService.getActiveSellServiceId(), this.authService.getUserId(), ).pipe(mergeMap([serviceId, userId]) => { if (serviceId && userId) { const Url = 'users/' + `${userId}` + '/services/' + `${serviceId}` + '?value=test return this.http.get<any>(this.endPoint.getUrl(encodeURI(Url))); } }) }

nota sobre los argumentos de combinelatest y no hay suscripción en getData

por ejemplo, en stackblitz:

https://stackblitz.com/edit/angular-rxjs-combinelatest-hjyfa6?file=src/app/app.component.ts

over 4 years ago · Santiago Trujillo Denunciar

0

Necesitaría usar un operador de mapeo de orden superior como switchMap para mapear de un observable a otro. Además, la función subscribe() solo acepta devoluciones de llamada y devuelve solo el objeto Subscription que contiene la suscripción.

Además, no está devolviendo nada si la condición if falla. Podría devolver un valor observable como RxJS constante EMPTY que completa inmediatamente la suscripción si la condición falla.

Es más

  1. observable<any> debe ser Observable<any>
  2. Aún no regresas de la función.
  3. La palabra clave de function no es necesaria en Typescript. En su lugar, podría mencionar el identificador de alcance.
  4. Está mezclando concatenación de cadenas con literales de plantilla. Aunque no tiene nada de malo sintácticamente, diría que es mejor quedarse con uno u otro.
  5. Adivinando por el contexto de la función, creo que desea hacer la solicitud una vez y terminar con ella. En lugar de un flujo de datos proporcionado por combineLatest . En ese caso, podría usar forkJoin en su lugar. Sin embargo, tenga en cuenta que forkJoin solo se emite cuando se completan todas sus fuentes.

Prueba lo siguiente

 import { Observable, forkJoin, EMPTY } from 'rxjs'; import { switchMap } from 'rxjs/operators'; public getData(): Observable<any> { return forkJoin([ this.activeSellService.getActiveSellServiceId(), this.authService.getUserId(), ]).pipe( switchMap(([serviceId, userId]) => { if (!!serviceId && !!userId) { const Url = `users/${userId}/services/${serviceId}?value=test`; return this.http.get<any>(this.endPoint.getUrl(encodeURI(Url))); } else { return EMPTY; } }) ); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda