Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

159
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda