No use la función setTimeout si desea mostrar cotizaciones diariamente porque cuando cierre su aplicación, setTimeout desaparecerá ya que no se ejecutará en segundo plano o cuando vuelva a cargar la aplicación, también se reiniciará. Así que no es una buena práctica usarlo para ese propósito. Si desea mostrar cotizaciones aleatorias diariamente, cree un backend y aquí debe escribir CRON Job para ello, que se ejecutará después de 24 horas y guardará las cotizaciones en su base de datos. Y luego cargue estas cotizaciones (haciendo una ruta de back-end) desde su base de datos en el lado del cliente. Sin embargo, si desea utilizar los temporizadores de fondo, utilícelos en lugar de setTimeout.
Como sugirió Asad Haroon, puede usar crontab con un cronjob que se parece a esto: 0 0 * * *
o @daily
. Aparte de eso, también puede considerar usar anacron si no está seguro de que su backend se ejecute sin parar las 24 horas del día, los 7 días de la semana (pero la configuración es diferente entonces).
Pero quiero sugerir otra implementación. Puede intentar registrar la última vez (como una new Date()
) que su usuario abrió el sitio web y vio la cotización. Si no tiene un backend, puede almacenarlo usando localStorage: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
Una vez que el usuario vuelve a abrir el sitio web, verifica si han pasado 24 horas desde la última actualización de la cotización. Digamos, restar una fecha y hora de la otra. Si es así, actualice la cotización. De lo contrario, no hagas nada.
En resumen, haga este cálculo cada vez que su usuario abra el sitio web y verifique si han pasado 24 horas desde la última actualización de la cotización restando la fecha y hora actual de las últimas actualizaciones de la cotización.