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

186
Visualizações
Cómo programar una tarea en Angular

Tengo que crear un componente en angular que limpie los datos en la base de datos (a través de una llamada de servicio) cada hora y muestre el último tiempo de limpieza en HTML. par de preguntas

  1. Cuando enrutamos de un componente a otro, ¿el componente se destruye automáticamente y pierde todos sus datos?
  2. ¿Es posible conservar los datos y usarlos en el futuro?
 @Component({ selector: 'demo-app', template:` <button (click)="clearData()"></button> <h2>Last synced time: {{ time }}</h2> ` }) export class AppComponent { public time; constructor(private demoService: DemoService) { } // ----> this should be triggered every hour <---- clearData() { this.demoService.deleteData() .subscribe((lastCleanTime) => {this.time = lastCleanTime;}); } }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

No prefiero hacer eso a través del lado del cliente, está bien agregar un botón para ejecutarlo, solo imagina estos casos:

  • Tiene 3 usuarios, por lo que esta tarea se ejecutará aproximadamente 3 veces cada hora, ¿qué pasa con más?
  • No tiene usuarios, por lo que la tarea nunca se ejecutará.

Prefiero hacerlo desde el lado del servidor, y puede actualizar la hora a través de una API para obtener la última hora o puede agregar un WebSocket para que esté siempre actualizado.

about 4 years ago · Juan Pablo Isaza Relatório

0

De hecho, una tarea de limpieza de la base de datos debe ejecutarse periódicamente en el lado del servidor. En proyectos Java en los que he participado, hemos realizado tareas similares con Tomcat o Jetty utilizando ServletContextListener . Otros servidores, por ejemplo, node, tienen sus propios mecanismos, por supuesto.

Usted crea una clase que implementa esta interfaz, cuyos métodos se llaman cuando su servlet se inicia o se destruye. En el método de inicio, crea un hilo que limpia la base de datos en un bucle cada hora, hasta que se destruye el servlet:

 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @WebListener public class DBCleanupContextListener implements ServletContextListener { private ExecutorService threadPool; private DBCleanupTask dbCleanupTask; public DBCleanupContextListener() { threadPool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); dbCleanupTask = new DBCleanupTask(); } @Override public void contextInitialized(ServletContextEvent arg0) { threadPool.execute(dbCleanupTask); // submit additional tasks here if needed... } @Override public void contextDestroyed(ServletContextEvent arg0) { dbCleanupTask.shutdown(); threadPool.shutdown(); } class DBCleanupTask implements Runnable { boolean finished = false; @Override public void run() { while (!finished) { System.out.println("db cleanup code goes here ...."); try { Thread.sleep(60 * 60 * 1000); // sleeps 1 hour = 60min*60sec*1000ms } catch (InterruptedException e) { finished = true; } } } public void shutdown() { finished = true; } } }

He ejecutado este código con Tomcat, Jetty y Spring Boot. En teoría, debería ejecutarse en cualquier servidor JavaEE, pero debe investigar cómo configurar el servlet. En Tomcat, por ejemplo, debe agregarse a web.xml, como se describe aquí :

 <web-app ...> <listener> <listener-class> com.example.DBCleanupContextListener </listener-class> </listener> </web-app>
about 4 years ago · Juan Pablo Isaza Relatório

0

1 Sí, los datos de los componentes se borran cuando navega de un componente a otro. si desea hacer algo antes de que el componente se destruya, puede usar el método ngOnDestroy Lifecycle del componente.

2 puede usar el servicio para almacenar datos mientras navega entre componentes.

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