Sé que puedo usar setInterval para enviar una solicitud al servidor cada 1 minuto para ver si se agregó algo nuevo a la base de datos para poder buscarlo y actualizar la interfaz de usuario de acuerdo con esto
pero por lo que he leído de diferentes artículos me confundí algunos dicen que es una mala práctica y otros lo usan
Entonces, estoy preguntando aquí para ver si hay un mejor enfoque para lograr esto o setInterval manejará la misión sin ningún problema.
Bueno, si tuviera que saber si algo ha cambiado, pensaría en usar sockets como una mejor opción. Por supuesto, si su servidor está listo para implementar este tipo de mecanismo.
Si no tiene la oportunidad de cambiar la lógica en el servidor (API de terceros o algo así), establezca Timeout en las soluciones más comunes de la práctica.
Pero con este tipo de soluciones tienes algunas advertencias:
setTimeout por sí mismo está bien. Depende de su situación si hay soluciones mejores o más apropiadas.
Puede configurar un cronjob simple.
Ya sea que lo use desde su VPS o alojamiento compartido (la mayoría de ellos tienen cron instalado), ya sea que pueda usar un servicio en línea gratuito como cron-job.org.
No hay problema con setInterval y setTimeout, pero no olvides que JS es monohilo y elegir el que corresponda a nuestras necesidades, dado que la diferencia entre ellos es importante.
Este punto interesante no es mío:
Lo de setInterval es menos un consejo de rendimiento pero más una mejor práctica de concurrencia. setInterval tiene el potencial de ejecutar código prematuramente cuando lo espera.
P.ej,
function doSomething () { // I take 500 ms to run } doSomething(); setInterval(doSomething, 150);Este fragmento de código se ejecutará en la próxima iteración doSomething inmediatamente después de que termine de ejecutar la iteración actual. ¡El temporizador de intervalos nunca se detiene! Esto tiene el potencial de congelar su entorno de tiempo de ejecución al ejecutar continuamente su código y no permitir que el sistema haga otras cosas.
function doSomething () { // I take 500 ms to run setTimeout(doSomething, 150); } doSomething();Aunque esto parece esencialmente lo mismo, la diferencia es que doSomething siempre esperará 150 ms después de ejecutarse antes de volver a poner en cola la siguiente iteración para su ejecución. Esto permite que el sistema ejecute otras operaciones y evita que su tiempo de ejecución se bloquee. https://www.reddit.com/r/javascript/comments/51srsf/is_it_still_true_that_we_shouldnt_use_setinterval/