【问题标题】:How to implement future function in R-Shiny如何在 R-Shiny 中实现未来功能
【发布时间】:2019-10-01 02:49:40
【问题描述】:
如何使用future函数
#Final Report output
output$repTable <- renderFormattable({
future({getFinalReportData()}) %...>% {
formattable()
}
})
使用上面的代码会导致以下错误:
警告:UseMethod 中的错误:“as.htmlwidget”没有适用的方法
应用于“promise”类的对象
96: 格式化::as.htmlwidget
95:功能
82:原始渲染函数
81: 输出$repTable
1:运行应用程序
未处理的承诺错误:在没有活动的情况下不允许操作
反应式上下文。 (你试图做一些只能做的事情
从反应式表达式或观察者内部。)
【问题讨论】:
标签:
r
shiny
promise
future
【解决方案1】:
您不能在以后的调用中添加反应式表达式/值 (check this article)。
除了所有期货都面临的限制之外,Shiny 还有一个额外的限制:无法从未来中读取反应式值和反应式表达式。每当读取响应式值/表达式时,都会在后台执行副作用,以便在响应式值/表达式失效时可以通知当前正在执行的观察者或响应式表达式。如果一个反应式值/表达式在一个进程中创建,但在另一个进程中读取,则无法通知读者无效。
您可以做的是首先将反应式表达式输出绑定到一个变量,并在以后的调用中使用它:
#Final Report output
output$repTable <- renderFormattable({
data <- getFinalReportData()
future(data) %...>% formattable()
})