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

158
Vistas
¿Cómo llamar a otro servicio/api solo si el primero se ha ejecutado correctamente?

Soy muy nuevo en angular y mecanografiado. He estado intentando esto.

 doSomething() { return this.http.post(this.path + "dosomething", data).toPromise(); }

ahora en .ts lo estas esperando

 await servicesCalls.doSomething();

Tras su implementación exitosa, necesito hacer lo mismo con todos los demás mapas del servicio.

Pero primero quiero asegurarme de que haya publicado los datos.

 await serviceCalls.doAnotherThing();

La api devuelve IHTTPACTIONRESULT es decir, Ok() .

Alguien me puede ayudar con eso? ¡Gracias por adelantado!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No hay necesidad de usar promesas. Los métodos HTTP en Angular devuelven un Observable. Puede suscribirse a ese observable, y cuando ese observable emite algunos datos, en el método de suscripción puede llamar a otro servicio.

Algo como esto::

 doSomething() { return this.http.post(this.path + "dosomething", data); }

Ahora hay varias maneras diferentes de hacer esto:

Método uno : forma normal. Llame a otro servicio en la suscripción del primero.

Componente:

 public callService() { doSomething.subscribe(data => { serviceCalls.doAnotherThing(); }, err => { // do something }) }

La suscripción solo se llamará cuando la función doSomething (es decir, su solicitud HTTP devuelve algún valor).

Método 2 : puede usar operadores rxjs - switchMap así:

 doSomething() .pipe( //Use switchMap to call another API(s) switchMap((dataFromServiceOne) => { serviceCalls.doAnotherThing(); }) ).subscribe((data) => { // do something with response console.log(data); });

Para más detalles sobre los operadores rxjs:

  1. cambiarMapa
  2. observables
about 4 years ago · Juan Pablo Isaza Denunciar

0

Usar switchMap

 doSomething() { return this.http.post(this.path + "dosomething", data); } doAnotherthing() { return this.http.post(this.path + "dosomething", data); } doSomething().pipe( tap(doSomethingResponse => this.performSomeOperation(doSomethingResponse)), switchMap(_ => this.doAnotherthing()) ).subscribe(doAnotherthingResponse => console. log(doAnotherthingResponse));
about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente podría almacenar esto en una variable como esta,

const promise = servicesCalls.doSomething();

y simplemente llame al siguiente así,

promise.then(async () => await serviceCalls.doAnotherThing()).catch(e => console.error(e));

La siguiente llamada a la API solo se ejecutará cuando se resuelva la promesa anterior.

about 4 years ago · Juan Pablo Isaza 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