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