invalidateLater {shiny} | R Documentation

## Scheduled Invalidation

### Description

Schedules the current reactive context to be invalidated in the given number of milliseconds.

### Usage

    invalidateLater(millis, session = getDefaultReactiveDomain())

### Arguments

`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 `NULL`, then this invalidation will not be tied to any session, and so it will still occur.

### Details

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.

### See Also

`reactiveTimer` is a slightly less safe alternative.

### Examples

    ## 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)
    }

[Package shiny version 1.0.3 Index]