Я пытаюсь преобразовать настольное приложение Shiny, использующее скрипт драйвера и несколько отдельных приложений, в серверное приложение, на котором выполняется основное приложение, при преобразовании каждого отдельного приложения в модули. Ранее код использовал runApp () и stopApp () для передачи информации между скриптом драйвера и частями, но я сталкиваюсь с трудностями, заставляя главный сервер ждать завершения вызываемого модуля, а также с загрузкой пользовательского интерфейса каждого модуля. только во время работы этого модуля.
Это на R 3.4.4, и я разрабатываю с использованием RStudio. Я пытался использовать задержку блестящей, но, похоже, это ничего не меняет.
server <- function(input, output, session){
source("module1.R")
source("module2.R")
insertUI(selector = "m1", ui = module1UI("mod1"))
val <- callModule(module1, "mod1")
#code reliant on val
stop <- FALSE
while(stop == FALSE){
removeUI(selector= "m1")
insertUI(selector = "m2", ui = module2UI("mod2"))
action <- callModule(module2, "mod2")
if(action == "end"){
stop <- TRUE
}
#other stuff down here
}
Проблема здесь в том, что val равен нулю, потому что у меня не было возможности закончить взаимодействие с модулем 1, а сервер просто продолжает работать.
Я также не совсем уверен, что я правильно создаю пользовательский интерфейс (module1UI - это функция (id), возвращающая список тегов входов / выходов). Если я создаю module1UI ("mod1") на странице жидкости ui.R, он загружается, но, похоже, не работает вообще.