R继续检查SQL查询是否已执行并终止进度条

R继续检查SQL查询是否已执行并终止进度条,r,shiny,R,Shiny,我有一个R Shinyweb页面,它接收用户输入,根据用户输入查询Postgres数据库,然后绘制信息。我正在尝试向闪亮的应用程序添加状态栏 但是,我的问题是,我不知道执行查询需要多长时间。查询执行时间取决于用户输入 是否有任何方法可以连续循环状态栏,直到查询完成?如果是,我如何跟踪查询的完成情况 下面是一个示例代码。“plot(rnorm(as.numeric(input$n_breaks))”中的行是代码中实际的SQL查询。此行的执行时间未知。我不是在寻找一个实际的代码。我只是想知道如何实施

我有一个R Shinyweb页面,它接收用户输入,根据用户输入查询Postgres数据库,然后绘制信息。我正在尝试向闪亮的应用程序添加状态栏

但是,我的问题是,我不知道执行查询需要多长时间。查询执行时间取决于用户输入

是否有任何方法可以连续循环状态栏,直到查询完成?如果是,我如何跟踪查询的完成情况

下面是一个示例代码。“plot(rnorm(as.numeric(input$n_breaks))”中的行是代码中实际的SQL查询。此行的执行时间未知。我不是在寻找一个实际的代码。我只是想知道如何实施这个概念

library(shiny)
mycss <- "
#plot-container {
position: relative;
}
#loading-spinner {
position: absolute;
left: 50%;
top: 50%;
z-index: -1;
margin-top: -33px;  /* half of the spinner's height */
margin-left: -33px; /* half of the spinner's width */
}
#plot.recalculating {
z-index: -2;
}
"

ui <- fluidPage(
tags$head(tags$style(HTML(mycss))),
actionButton("btn", "Plot (takes 2 seconds)"),
selectInput(inputId = "n_breaks",
          label = "Select number of points",
          choices = c(100, 1000, 10000, 100000),
          selected = 100),
div(id = "plot-container",
  tags$img(src = "spinner.gif",
           id = "loading-spinner"),
  plotOutput("plot")
 )
)

server <- function(input, output, session) {
output$plot <- renderPlot({
input$btn
i = 0
while (i==0) {
  Sys.sleep(1)
  plot(rnorm(as.numeric(input$n_breaks)))
  i = 1
  }
})
}
库(闪亮)

mycss我通过以下链接找到了答案:

https://shiny.rstudio.com/articles/progress.html

从本质上讲,如果progress函数调用另一个函数来执行长时间运行的计算,那么就不可能做到这一点。我们所能做的最好是将其设置为起始值,例如0.3,然后在完成时将其移动到1。例如,如果函数位于外部软件包中,也可能是这样。

我通过以下链接找到了答案:

https://shiny.rstudio.com/articles/progress.html
从本质上讲,如果progress函数调用另一个函数来执行长时间运行的计算,那么就不可能做到这一点。我们所能做的最好是将其设置为起始值,例如0.3,然后在完成时将其移动到1。例如,如果函数位于外部包中,也可能是这样