Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

291
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!