Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

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
languagejs
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:

...