Shiny: Добавьте outputOptions (), чтобы выходные данные отображались как можно скорее, а не ждать сброса

Созданный на 11 мая 2017  ·  4Комментарии  ·  Источник: rstudio/shiny

Рассмотрим этот код

library(shiny)

ui <- fluidPage(
  actionButton("btn", "Click"),
  uiOutput("out")
)

server <- function(input, output) {
  values <- reactiveValues(foo = NULL)

  observeEvent(input$btn, {
    values$foo <- "bar"
     Sys.sleep(1)
  })

  output$out <- renderUI({
    values$foo
  })
}

shinyApp(ui = ui, server = server)

Было бы полезно иметь возможность сказать shiny, чтобы текстовый вывод обновлялся немедленно, когда назначается реактивное значение, вместо того, чтобы ждать сброса.

Consult Team Advanced High Low Type

Самый полезный комментарий

Я читал это где-то в документации пакета async:

Никакие входные данные от браузера не поступают, пока не будут завершены все ожидающие асинхронные выходы / наблюдатели.

Это напомнило мне об этой проблеме. Это означает, что асинхронный режим не будет полезен тем, кто выполняет дорогостоящие вычисления и хочет продолжать использовать приложение. Я думаю, что возможность сказать shiny позволить выходному рендеру, когда он будет готов, не блокируя другие, в сочетании с новой возможностью асинхронности, будет очень мощной.

Все 4 Комментарий

(Спасибо!)

Я бы тоже хотел, чтобы эта функция была добавлена.

Если это просто текстовое поле, я считаю, что это работает (у меня оно заключено в observeEvent ):

withCallingHandlers({
  shinyjs::html("txt_field", "")
  message('foo')
},
message = function(m) { shinyjs::html(id = "txt_field", html = m$message, add = TRUE) }
)

Я читал это где-то в документации пакета async:

Никакие входные данные от браузера не поступают, пока не будут завершены все ожидающие асинхронные выходы / наблюдатели.

Это напомнило мне об этой проблеме. Это означает, что асинхронный режим не будет полезен тем, кто выполняет дорогостоящие вычисления и хочет продолжать использовать приложение. Я думаю, что возможность сказать shiny позволить выходному рендеру, когда он будет готов, не блокируя другие, в сочетании с новой возможностью асинхронности, будет очень мощной.

Никакие входные данные от браузера не поступают, пока не будут завершены все ожидающие асинхронные выходы / наблюдатели.

Для записи: в отношении асинхронного режима существует обходной путь без блокировки .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги