Angular 2: Cómo llamar a una función después de obtener una respuesta de subscribe http.post
Necesito llamar a un método después de obtener los datos de la petición http post
Servicio: request.service.TS
get_categories(number){
this.http.post( url, body, {headers: headers, withCredentials:true})
.subscribe(
response => {
this.total = response.json();
}, error => {
}
);
}
componente: categories.TS
search_categories() {
this.get_categories(1);
//I need to call a Method here after get the data from response.json() !! e.g.: send_catagories();
}
Sólo funciona si cambio a:
servicio: request.service.TS
get_categories(number){
this.http.post( url, body, {headers: headers, withCredentials:true})
.subscribe(
response => {
this.total = response.json();
this.send_catagories(); //here works fine
}, error => {
}
);
}
Pero necesito llamar al método send_catagories()
dentro del componente después de llamar a this.get_categories(1);
así
componente: categories.TS
search_categories() {
this.get_categories(1);
this.send_catagories(response);
}
¿Qué estoy haciendo mal?
24
3
Actualice su método
get_categories()
para devolver el total (envuelto en un observable):En
search_categories()
, puedes suscribir el observable devuelto porget_categories()
(o podrías seguir transformándolo encadenando más operadores RxJS):Ten en cuenta que sólo te suscribes una vez, al final.
Como dije en los comentarios, el método
.subscribe()
de cualquier observable acepta 3 callbacks como este:Deben pasarse en este orden. No es necesario pasar los tres. Muchas veces sólo se implementa el
nextCallback
:Puede añadir una función de devolución de llamada a su lista de parámetros get_category(...).
Ej:
Y entonces puedes llamar a get_category(...) así:
entonces