Как реализовать будущую функцию - PullRequest
1 голос
/ 14 мая 2019

Как использовать будущую функцию

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

Использование приведенного выше кода приводит к следующей ошибке:

Предупреждение: ошибка в UseMethod: нет подходящего метода для 'as.htmlwidget ', примененный к объекту класса "обещание" 96: formattable :: as.htmlwidget 95: func 82: origRenderFunc 81: output $ repTable 1: runApp

Ошибка необработанного обещания: операция не разрешена без активной реактивной функцииконтекст.(Вы пытались сделать что-то, что можно сделать только из реактивного выражения или наблюдателя.)

1 Ответ

1 голос
/ 14 мая 2019

Нельзя добавить реактивное выражение / значение в будущем вызове ( см. Эту статью ).

В дополнение к ограничениям, с которыми сталкиваются все фьючерсы, есть еще одно ограничение для Shiny: реактивные значения и реактивные выражения не могут быть прочитаны из будущего.Всякий раз, когда реактивные значения / выражения считываются, побочные эффекты выполняются под капотом, так что исполняющий в настоящее время наблюдатель или реактивное выражение может быть уведомлено, когда реактивное значение / выражение становится недействительным.Если реактивное значение / выражение создается в одном процессе, но читается в другом процессе, у читателей не будет возможности получить уведомление о признании недействительным.

То, что вы можете сделать, - это сначала связатьвыведите реактивное выражение в переменную и используйте его в своем будущем вызове:

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