如何实现未来的功能

时间:2019-05-14 06:32:15

标签: r shiny promise future

我如何使用将来的功能

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

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

  

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

     

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

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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