Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对于长时间运行的数据库查询,如何减少Shining应用程序中的单会话延迟?_R_Shiny_Promise - Fatal编程技术网

R 对于长时间运行的数据库查询,如何减少Shining应用程序中的单会话延迟?

R 对于长时间运行的数据库查询,如何减少Shining应用程序中的单会话延迟?,r,shiny,promise,R,Shiny,Promise,我有一个闪亮的应用程序,其中一个绘图是长时间运行的数据库查询的结果。我希望应用程序的其余部分继续具有响应性和交互性。查询完成后,我想用最终结果更新占位符图形 我考虑过使用promises包,但该包的设计目的是防止一个会话等待另一个会话完成工作。正如Joe Cheng在中所解释的,事件循环仍然等待所有输出准备就绪——无论是否承诺 过去,我使用以下方法成功地实现了自己的异步计算: mydata <- reactiveVal() output <- renderPlot({ if

我有一个闪亮的应用程序,其中一个绘图是长时间运行的数据库查询的结果。我希望应用程序的其余部分继续具有响应性和交互性。查询完成后,我想用最终结果更新占位符图形

我考虑过使用
promises
包,但该包的设计目的是防止一个会话等待另一个会话完成工作。正如Joe Cheng在中所解释的,事件循环仍然等待所有输出准备就绪——无论是否承诺

过去,我使用以下方法成功地实现了自己的异步计算:

mydata <- reactiveVal()

output <- renderPlot({ 
  if (isTruthy(mydata())) {
    ggplot(mydata(), ...) 
  } else {
    ggplot(placeholder_or_interim_data_here)
  }
})

observeEvent(input$user_param, {

  stopifnot(0==system2("Rscript", c("myscript.R", input$user_param), wait=FALSE))

})

observe({
  if (script_done) {
    mydata(read_script_result)
  }
  invalidateLater(500)
})
mydata