В следующем блестящем приложении:
При нажатии кнопки она печатается на консоли один раз в секунду.
library(shiny)
library(rlang)
ui <- fluidPage(
textOutput("text"),
actionButton("button","Click to Start")
)
server <- function(input, output, session) {
myVal <- reactiveVal(0)
startCount <- reactiveVal(FALSE)
observeEvent(input$button,{
startCount(TRUE)
})
observe({
req(startCount())
req(myVal() < 5)
invalidateLater(1000)
newVal <-myVal() + 1
# myVal(newVal)
print(myVal())
})
output$text <- renderText(myVal())
}
shinyApp(ui, server)
При удалении комментария # myVal(newVal)
она печатает от 1 до 5 вконсоль, и отображает 5 в пользовательском интерфейсе.Но есть две проблемы:
invalidateLater
перестает работать, он не ждет больше одной секунды. - Пользовательский интерфейс мгновенно переходит на 5 вместо отображения 1,2,3,4,5 с интервалом в одну секунду.
Что я должен сделать, чтобы все заработало как положено?