2017-10-20 10 views
0

Espérons que ce soit une question simple. J'ai une ligne comme celui-ci dans une application brillante qui fonctionne très bien:R Temps réactif brillant à déclencher à un moment spécifique et non à un intervalle spécifique

autoInvalidate <- reactiveTimer(120000) 

Y at-il de toute façon de définir un événement pour exécuter dire toutes les 5 minutes sur la minute et pas seulement mis à part les intervalles? Ainsi, par exemple, si l'application est lancée à 18h03, elle exécutera l'élément réactif à 18h05 puis 18h10 puis 18h15 etc.

Répondre

2

Cela peut dépendre de l'élément réactif que vous essayez de mettre à jour, mais vous pourriez éventuellement le faire avec l'interrogation réactive et floor_date du paquet lubridate.

Alors, vous auriez un élément réactif qui repose sur des données fournies par une fonction reactivePoll, et cette mise à jour de données à chaque intervalle de 5 minutes, comme ceci:

data <- reactivePoll(intervalMillis = 60000, session, 
         checkFunc = function() { 
          #check the time, rounded down to the previous 5 minute interval 
          lubridate::floor_date(Sys.time(), "5 mins") 
         }, 

         valueFunc = function() { 
          #if checkFunc value has changed since the last check, return some updated value or updated dataset 
          get_value()       
         } 
)