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

167
Views
Error de lanzamiento de promesa de Angular 2

Estoy tratando de crear un servicio que maneje contactos en Angular 2. Esto es lo que obtuve hasta ahora.

 import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; import 'rxjs/add/operator/toPromise'; @Injectable() export class ContactsService { constructor(private http: Http) { } addContact(contact): Promise<any> { return this.http .post('http://localhost:8000/contacts', contact) .toPromise() .then(response => response.json()) .catch(error => error.json()); } }

Ahora el servicio funciona bien, si obtengo un código de estado de más de 400+ en la respuesta, el código va a la catch fija, si es un código de 200 then va al estado y devuelve la respuesta.

Pero cuando lo uso dentro de un componente then pasa al estado sin importar si la respuesta está bien o no.

 addingContact() { this.contactsService .addContact(this.user) .then( (contactx) => { console.log('THEN = ' + JSON.stringify(contactx)); }, (err) => { console.log('CATCH = ' + JSON.stringify(err)); } ); }

¿Hay algo que me falta? ¿Debería lanzar algo en el servicio para que el código vaya al inicio de error en caso de que obtenga un código de estado de más de 400+ ?

¡Gracias de antemano, Daniel!

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Está tragando el error en la captura, aún puede tener una cláusula de captura para transformar el error, pero debe devolver una Promesa rechazada. Algo como eso:

 let httpPromiseMock = new Promise((resolve, reject)=> { reject('400 error'); }); httpPromiseMock .then(x=> {console.log(x); return x*2;}) .catch(x=> Promise.reject(`my error is ${x}`)) .then(x=>console.log('good',x), err=>console.log('bad', err));
about 4 years ago · Santiago Trujillo Report

0

¿Debería lanzar algo en el servicio para que el código vaya al inicio del error en caso de que obtenga un código de estado de más de 400?

Sí, porque en este momento, su declaración de catch del servicio se está tragando el error.

También puede deshacerse de la instrucción catch allí, pero deberá recordar agregar una en cada pieza de código que use addContact .

about 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!