как контролировать порядок распространения обновлений в блестящем

Привет, я хотел бы послать "ложное" обновление ввода со стороны сервера ПОСЛЕ некоторых вычислений. Другими словами, я хотел бы контролировать порядок распространения выходных обновлений.

Например, в приведенном ниже скрипте мне нужно обновить output $ text после Sys.sleep во 2-м ObservationEvent:

library(shiny)

ui <- fluidPage(

   titlePanel("PLOP"),

   sidebarLayout(
      sidebarPanel(
        selectInput("variable", "Variable:",
                    c("Cylinders" = "cyl",
                      "Transmission" = "am",
                      "Gears" = "gear")),
        actionButton("press","press")
      ),

      mainPanel(
         textOutput("text")
      )
   )
)

server <- function(input, output) {

  output$text <- renderText({
    input$press
    message("rendertext at ",Sys.time())
    paste(input$variable,Sys.time())})

  observeEvent(input$variable,
               message("variable is edited at ",Sys.time())
               )
  observeEvent(input$press,{
               message("button is presed at ",Sys.time())
               # lot of stuff
                Sys.sleep(2)
                message("end calculation at ",Sys.time())
               # AND NOW I would like to send a "false" input$variable update
               # I dont want to change input$variable, but I need to rerun everything which use input$variable
               # ( .... ) for example : changing output$text but AFTER the Sys.sleep call


})




}

# Run the application
shinyApp(ui = ui, server = server)

большое спасибо


person Vincent Guyader    schedule 19.02.2017    source источник


Ответы (1)


Как упоминалось в моем комментарии: В ?oberserveEvent вы можете установить параметр priority. Сначала будут оцениваться функции с номерами с более высоким приоритетом.

person Tonio Liebrand    schedule 19.02.2017