如何在R-Shiny中实现将来的功能

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

如何使用将来的功能

  #Final Report output
  output$repTable <- renderFormattable({
    future({getFinalReportData()}) %...>%   {
      formattable()
    }
  })

使用上面的代码将导致以下错误:

警告:UseMethod中的错误:'as.htmlwidget'没有适用的方法应用于“ promise”类的对象96:formattable :: as.html小部件95:功能82:origRenderFunc81:输出$ repTable1:runApp

未处理的承诺错误:如果没有激活,则不允许进行操作反应性上下文。 (您尝试做只能做的事情从反应式表达式或观察者内部。)

r shiny promise future
1个回答
2
投票

您无法在以后的调用(check this article)中添加反应性表达式/值。

除了所有期货都面临的约束之外,Shiny还有另外一个约束:不能从期货中读取反应性值和反应性表达式。每当读取无功值/表达式时,都会在后台进行副作用,以便在无功值/表达式无效时可以通知当前正在执行的观察者或无功表达式。如果在一个过程中创建了反应性值/表达式,但在另一个过程中进行了读取,则将无法通知读者有关无效的信息。

您可以做的是首先将反应表达式输出绑定到变量,并在以后的调用中使用它:

 #Final Report output
 output$repTable <- renderFormattable({
    data <- getFinalReportData()
    future(data) %...>% formattable()
 })
© www.soinside.com 2019 - 2024. All rights reserved.