多会话计划未按照手册中的描述进行工作

问题描述 投票:0回答:1

我一直在尝试了解如何在 Shiny 中进行异步编程,但我无法让它工作。

在我看来,当我等待(十秒)情节出现时,日期应该每秒刷新一次。然而,事实并非如此。主要会议因

Sys.sleep()
而保持忙碌。

有人可以指出我对逻辑的理解出了问题吗?

(我按照手册制作了自己的代表。)

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

ui <- fluidPage(
  
  shiny::selectInput("select", "select", choices = c("iris","mtcars")),
  
  tableOutput("table")
)

server <- function(input,output,session) {
  
  output$table<- renderTable(
    {
      
      select <- input$select
      future_promise(
        {
          Sys.sleep(10)
          get(select)
        }
      ) %...>%
        data.frame()
    }
    
  )
  
  # check if session is not taken by expensive operation
  observe(
    {
      invalidateLater(1000,session = session)
      print(Sys.time())
    }
  )
}

shinyApp(ui,server)
r asynchronous shiny future
1个回答
0
投票

以前,Shiny 中的异步仅用于不阻止其他用户。现在有

ExtendedTask
。优点是当前用户的会话不会被阻止。这是如何使用它的示例

© www.soinside.com 2019 - 2024. All rights reserved.