Schedules the current reactive context to be invalidated in the given number of milliseconds.
invalidateLater(millis, session = getDefaultReactiveDomain())
millis | Approximate milliseconds to wait before invalidating the current reactive context. |
---|---|
session | A session object. This is needed to cancel any scheduled
invalidations after a user has ended the session. If |
If this is placed within an observer or reactive expression, that object will
be invalidated (and re-execute) after the interval has passed. The
re-execution will reset the invalidation flag, so in a typical use case, the
object will keep re-executing and waiting for the specified interval. It's
possible to stop this cycle by adding conditional logic that prevents the
invalidateLater
from being run.
reactiveTimer()
is a slightly less safe alternative.
## Only run examples in interactive R sessions if (interactive()) { ui <- fluidPage( sliderInput("n", "Number of observations", 2, 1000, 500), plotOutput("plot") ) server <- function(input, output, session) { observe({ # Re-execute this reactive expression after 1000 milliseconds invalidateLater(1000, session) # Do something each time this is invalidated. # The isolate() makes this observer _not_ get invalidated and re-executed # when input$n changes. print(paste("The value of input$n is", isolate(input$n))) }) # Generate a new histogram at timed intervals, but not when # input$n changes. output$plot <- renderPlot({ # Re-execute this reactive expression after 2000 milliseconds invalidateLater(2000) hist(rnorm(isolate(input$n))) }) } shinyApp(ui, server) }