Estoy tratando de crear una API que devuelva una canción aleatoria del día. Estoy tratando de programar la función aleatoria para que se ejecute una vez al día y elija una nueva canción para ese día. Estoy usando node-cron para hacer esto. Sin embargo, esta función se ejecuta mucho más de una vez al día. Parece estar funcionando más como una vez por hora, pero no estoy seguro de con qué frecuencia funciona. La API está alojada en Heroku si eso hace alguna diferencia.
const cron = require('node-cron'); let usedSongs = []; let use; function randomize() { if(usedSongs.length === 169) { usedSongs = []; }; let test = Math.round(Math.random(0,1) * 169); usedSongs.includes(test) ? randomize() : use = String(test); usedSongs.push(test) }; randomize(); cron.schedule('0 0 0 * * *', () => { randomize(); }, {scheduled: true, timezone: 'America/New_York' });Parece que está llamando al azar () dos veces, una justo después de la definición del método (que probablemente se ejecutará cada vez que se inicie el servidor (?), Y nuevamente dentro del programador, que debería activarse una vez al día como se esperaba.
function randomize() { if(usedSongs.length === 169) { usedSongs = []; }; let test = Math.round(Math.random(0,1) * 169); usedSongs.includes(test) ? randomize() : use = String(test); usedSongs.push(test) }; randomize(); <<<<<<<<<<<<<<<<<< cron.schedule('0 0 0 * * *', () => { randomize(); <<<<<<<<<<<<<<<<< }, {scheduled: true, timezone: 'America/New_York' });