在排除其余代码之前,如何首先在闪亮的东西中渲染?

时间:2018-04-01 16:33:10

标签: r shiny

我想渲染一个文本来通知用户任务将要运行,但似乎闪亮执行服务器中的所有代码然后它移动到UI。 这是一个例子:

Array
(
    [0] => id
    [1] => name
    [2] => email
)

在上面的例子中,我从未看到“创建数据帧”,如何在执行其余代码之前首先呈现该文本。

1 个答案:

答案 0 :(得分:1)

它不是最漂亮的,但是如果您可以使用输入来显示这样的状态消息,那么您可以传达正在发生的事情......

library(shiny)

ui <- fluidPage(
  mainPanel(
    textInput("notice", "Status", "creating a dataframe"),
    textOutput("ptext")
  )
)

server <- function(input, output, session) {
  dat <- reactive({
    Sys.sleep(3)
    matrix(rnorm(10000), nrow = 10)
  })

  output$ptext <- renderText({
    req(dat())
    updateTextInput(session, "notice", value = "dataframe created !!")
    return("hello world")
  })
}

shinyApp(ui = ui, server = server)

(请注意session添加到server的参数,这是使用updateTextInput(session, ...)所必需的。)

使用动态UI创建和删除或对象隐藏(可能使用shinyjs)可能会变得更复杂,但这比我想象的要复杂得多。