Я работаю с глобальными переменными, которые обновляются после времени X. Эта проблема, с которой я сталкиваюсь, заключается в том, что она обновляет глобальную переменную, но текущий сеанс не обновляется соответствующим образом, однако при любом новом открытии сеанса используется обновленная глобальная переменная.
Вопрос: как заставить текущий сеанс использовать обновленную глобальную переменную? Я думал, что обернуть его в реактив будет работать, но это не так.
Код:
library(shiny)
library(shinydashboard)
####/GLOBAL/####
num <- 4
####/UI/####
header <- dashboardHeader()
sidebar <- dashboardSidebar()
body <- dashboardBody(
verbatimTextOutput("test")
)
ui <- dashboardPage(header, sidebar, body)
####/SERVER/####
server <- function(input, output, session) {
data <- reactive({num})
output$test <- renderText({ data() })
observe({
invalidateLater(0.5*60*1000,session)
num <<- sample(1:1000,1,replace=T)
})
}
shinyApp(ui, server)
Если вы подождете более 30 секунд, а затем откроете новый сеанс, вы увидите, что номер изменился с 4, но в исходном сеансе все еще отображается 4. Они должны показывать тот же номер.