Наблюдатели постоянно слушают изменения. Учитывая, что у вас есть предустановленные значения в obs_1, obs_2,...
, он обращает на них внимание. Таким образом, он не знает или не заботится, если вы считаете, что другие 2 входа ждут изменения или нет. Что вы можете сделать, так это отложить эту реакцию на debounce
, если хотите. Обратите внимание, что он установлен на 3 секунды ожидания после того, как все параметры были установлены. Я добавил 3 переменные в список, чтобы вы могли использовать их позже как mystuff_d()
library(shiny)
library(magrittr)
ui <- fluidPage(
sliderInput("obs_1", "obs_1", min = 0, max = 1000, value = 500),
sliderInput("obs_2", "obs_2", min = 0, max = 1000, value = 500),
sliderInput("obs_3", "obs_3", min = 0, max = 1000, value = 500)
)
rv <- reactiveValues(something_is_done <- FALSE)
server <- function(input,output,session){
mystuff <- eventReactive(c(input$obs_1,input$obs_2,input$obs_3),{
rv$something_is_done <- FALSE
c(input$obs_1,input$obs_2,input$obs_3)
},ignoreInit = TRUE)
mystuff_d <- mystuff %>% debounce(3000)
observeEvent(mystuff_d(),{
print(mystuff_d())
# do "something"
# ...
# ...
rv$something_is_done <- TRUE
})
observeEvent(rv$something_is_done,{
if(rv$something_is_done){
# do "another thing"
# ...
# ...
print("another thing")
}
},ignoreInit = TRUE)
}
shinyApp(ui=ui,server = server)