Shiny:是否有可能将反应性代码与observeEvent()一起运行?

时间:2018-04-27 16:51:03

标签: r shiny shiny-reactivity shinyapps

在下面的Shiny应用程序中,按下操作按钮(运行)时会执行长计算。输出显示在计算结束时。

应用程序中显示了一个时钟。虽然长时间计算正在进行,但时钟不会更新。

在计算过程中是否可以更新时钟?

代码:

library(shiny)

n <- c(1:42E7)

ui <- fluidPage(
  actionButton(inputId = "run", label = "Run a long calculation"),
  verbatimTextOutput("calc"),
  verbatimTextOutput("time")
)

server <- function(input, output) {

  x <- observeEvent(input$run,{
    output$calc <- renderText({
      head(sqrt(n))
    })
  })


  output$time <- renderText({
    invalidateLater(1000)
    print(as.character(Sys.time()))
  })

}

shinyApp(ui = ui, server = server)

感谢您的期待,

克里斯

1 个答案:

答案 0 :(得分:1)

这个答案还不行,我把它放在这里只是为了让你能够接受我。

您需要更新为Shiny(var express = require('express'); var app = express(); var path = require('path'); var router = express.Router(); // viewed at http://localhost:8080 app.use(express.static(__dirname + '/dist')); app.listen(80); )的开发版本。

我用remotes::install_github("rstudio/shiny")替换了您的玩具示例,因为转移了引发选项Sys.sleep()所需的大向量,但仍然导致我的机器崩溃。

future.globals.maxSize

我预计它会起作用,但“昂贵的操作”仍在阻塞,我还没弄清楚为什么。希望它仍然有用。

参考:https://rstudio.github.io/promises