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

189
Views
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 answers
Answer question

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 Report

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 Report

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