downloadHandler唯一地忽略同一用户正在进行的异步过程

时间:2018-10-23 23:58:36

标签: r shiny r-future

我正在尝试Promise,据我所了解,正如本issue中所指出的,为同一用户运行的异步进程应该阻止所有其他会话内活动的执行。但是,这似乎不是一个通用原则。

在下面的示例应用程序中,我人为地绘制了绘图操作和一些其他元素,以了解它们如何相互作用。这些元素之一是downloadButton / downloadHandler对。在异步操作运行期间,仍然可以按downloadButton并获得输出,这对我来说是意外的。我的问题是:

  • 我可以在运行异步进程时停止downloadHandler处于活动状态吗?
  • 为什么downloadHandler很特别?


library(future)
library(promises)
library(shiny)
plan(multisession)

server = function(input, output) { # slow async plot output$slow_plot <- renderPlot({ input$slow_plot_button future({ print('I am slow') Sys.sleep(10) runif(20) }) %...>% plot(.) }) # fast normal plot output$fast_plot = renderPlot({ print('I am fast') input$fast_plot_button plot(runif(20)) }) # something that has no UI output observeEvent(input$non_ui_update,{ print('Button press yay!') }) # trigger happy downloadHandler output$download = downloadHandler('file', content = function(file){ cat('is a file',file = file) })}

ui = fluidPage( titlePanel("Async test"), sidebarLayout( sidebarPanel( actionButton('slow_plot_button','slow plot button'), actionButton('fast_plot_button','fast plot button'), actionButton('non_ui_update','non ui update'), downloadButton('download','download') ), mainPanel( plotOutput("slow_plot"), plotOutput("fast_plot") ) ) )

shinyApp(ui,server)

编辑:删除了关于downloadButton首先下载整个页面的附加信息,因为它不是问题的组成部分

0 个答案:

没有答案