Трудно решить эту проблему, не имея полного приложения, доступного для тестирования, но эту логику я бы использовал при решении проблемы:
values <- reactiveValues(
QG1 = NULL,
QG2 = NULL,
QG3 = NULL
)
values$QG1 <- callModule(loadInput, "first")
observeEvent(values$QG1, {
values$QG2 <- callModule(addParameter, "second", values$QG1)
})
observeEvent(values$QG2, {
values$QG3 <- callModule(analyze, "third", values$QG2)
})
В первом блоке мы создаем несколько реактивных значений, которые будут содержать выходные данные каждого из модулей. Мы инициализируем каждый из них в NULL
, так как NULL
по умолчанию игнорируется observeEvent()
.
Затем мы можем вызвать первый модуль и установить возвращаемый результат равным values$QG1
. loadInput
не нужно возвращать реактивное выражение, на самом деле, у меня не было бы никаких модулей, возвращающих реактивные выражения. Когда значение values$QG1
изменяется, срабатывает первый observeEvent()
, который, в свою очередь, изменяет значение values$QG2
. Наконец, изменение значения values$QG2
вызовет вторую observeEvent()
, которая в конечном итоге возвращает его значение values$QG3
.