вы можете использовать отключить функциональность практически на все входы с функциональностью от shinyjs
. Ниже я создал несколько интенсивную операцию, и кнопка будет деактивирована во время создания таблицы, чтобы пользователи не могли нажимать ее несколько раз, если сначала не создается выход.
rm(list = ls())
library(shiny)
library(DT)
library(shinyjs)
ui =fluidPage(
useShinyjs(),
sidebarPanel(
sliderInput("numbers", "Number of records", 1000000, 5000000, 1000000, sep = ""),
actionButton("goButton","GO")
),
mainPanel(DT::dataTableOutput('table'))
)
server = function(input, output, session){
My_Data<-reactive({
if (is.null(input$goButton) || input$goButton == 0){return()}
isolate({
input$goButton
# Disable a button
disable("goButton")
# below is your intensive operation
a <- round(rnorm(input$numbers),2)
b <- round(rnorm(input$numbers),2)
# Enable a button again
enable("goButton")
data.frame("a" = a, "b" = b)
})
})
output$table <- DT::renderDataTable(withProgress(datatable(My_Data(),options = list(searching = FALSE,pageLength = 10,lengthMenu = c(5,10, 50))),message = "Generating Data"))
}
runApp(list(ui = ui, server = server))
Через 4 секунды после u –
Это происходит :) +1 от меня. – zero323