Non sono del tutto sicuro del perché, ma l'utilizzo di setInterval
mi fa sentire a disagio.
Se dovessi richiedere questo, vorrei usare qualcosa di simile a questo approccio:
var counter = 10;
var timeout = new Date();
setInterval(function(){
if(new Date() >= timeout)
{
--counter; // the action to perform
timeout = new Date(timeout.getTime() + 86400000); // update the timeout to the next time you want the action performed
}
console.log(counter);
},1000); // every second is probably way more frequent than necessary for this scenario but I think is a decent default in general
Una cosa che questo permette è quello, ad esempio, impostare il timeout successivo alla mezzanotte di domani piuttosto che essere bloccato in a "X secondi dall'esecuzione precedente". La chiave è l'inversione del controllo - l'azione stessa può ora dettare quando dovrebbe essere eseguita la prossima volta.
Anche se probabilmente avrei astratto i dettagli dietro un'interfaccia accettando un avvio, un intervallo e un'azione.
Hmm? Che biblioteca? Il tuo codice attuale non utilizza nessuno ... – Jeroen
Volevo solo sapere se esiste un modo migliore per scrivere questo codice? In questo modo migliore, non voglio usare alcuna libreria come il momento. Questo è quello che intendevo. Scusa per la lac chiarezza –
@Jeroen probabilmente vuole un modo migliore per risolvere questo problema, senza usare una libreria. Non sta dicendo che ne sta usando uno ora, solo che non vuole la soluzione :-) –