library(shiny)
library(future)
library(promises)
library(magrittr)
plan(multisession)
ui <- fluidPage(
p("This app tests that ", tags$code("invalidateLater()"), " calls are held until async operations are complete."),
tags$ol(
tags$li("You should see the number below increasing by 1, every 2 seconds."),
tags$li("The output should be semi-transparent (i.e. recalculating state) continuously."),
tags$li("You should see the word 'Flushed' in the R console, every 2 seconds.")
),
verbatimTextOutput("out")
)
server <- function(input, output, session) {
value <- reactiveVal(0L)
observe({
invalidateLater(100)
isolate({ value(value() + 1L) })
})
session$onFlushed(function() {
print("Flushed")
}, once = FALSE)
output$out <- renderText({
future(Sys.sleep(2)) %...>%
{ value() }
})
}
shinyApp(ui, server)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.