2017-02-19 3 views
1

zu steuern Ich möchte eine "falsche" Eingabe-Update von der Serverseite nach einigen Berechnungen senden. Mit anderen Worten, ich möchte die Reihenfolge der Ausgabeaktualisierungsausbreitung steuern.wie die Update-Propagation Reihenfolge in glänzenden

Zum Beispiel im Skript unten Ich brauche Ausgang $ Text nach dem Sys.sleep in der 2. observeEvent aktualisieren:

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) 

Vielen Dank

Antwort

1

Wie in meinem Kommentar mentionted: In ?oberserveEvent Sie können einen Parameter priority einstellen. Funktionen mit höheren Prioritätszahlen werden zuerst ausgewertet.

Verwandte Themen