...
Veamos como implementaríamos esto en ambas partes.
Frontend
Después de la primera petición, con la que obtendremos el id de solicitud, para hacer pooling podemos hacerlo de la siguiente manera:
| Bloque de código | ||
|---|---|---|
| ||
obtenerResolucion(numSolicitud) {
// Llamada al método REST para obtener los datos
ServicioRest.obtenerResolucion(numSolicitud, this.token)
.then((response) => {
if(response.status === 202){
// Si no están listos los datos esperamos para volver a hacer la petición, en este caso 5000ms, 5s, le ponemos tiempo de espera que queramos
setTimeout(()=>{this.obtenerResolucion(numSolicitud)}, 5000);
} else {
// Procesamiento de los datos ya obtenidos
...
}
})
// Si se produce un error lo indicamos con un toast
.catch(() => {
this.$store.dispatch("global/setShowSpinner", false); // Quitamos el spinner de carga - Hay que adaptarlo a cómo lo hagamos en nuestra aplicacion
this.$toast.add({
severity: "error",
summary: "Error",
detail: "Se ha producido un error en el proceso.",
life: 3000,
});
});
}, |
Backend
Para ejecutar código de forma asíncrona en Spring Boot, podemos utilizar CompletableFuture.runAsync( ... ), y con esto el método que inicia la solicitud tendría esta estructura:
...