我正在尝试在reactivePoll
中包含observe
,因为我需要在req
完全填充我的应用程序后才能启动它(否则可能会崩溃),然后将其传递给我正在使用reactiveValues
的会话变量。由于某种原因,每次我在变量中执行更改时,看起来reactivePoll
都会创建其自身的副本,并开始执行checkFunc超过所需的次数。最小示例:
library(shiny)
ui <- fluidPage(selectInput("x", "Change options", c(1, 2)))
server <- function(input, output, session) {
v <- reactiveValues()
observe({
print("obs")
req(input$x)
v$a <- reactivePoll(5000, session,
checkFunc = function() {
print("test")
input$x
}, valueFunc = function() {
print("value")
1
})
print(v$a())
})
}
shinyApp(ui, server)
如您所见,当更改selectInput值时,检查功能内部的打印结果比以前计算n +1倍。
答案 0 :(得分:0)
library(shiny)
ui <- fluidPage(selectInput("x", "Change options", c(1, 2)))
server <- function(input, output, session) {
v <- reactiveValues()
a <- reactivePoll(5000, session,
checkFunc = function() {
req(input$x)
print("test")
input$x
},
valueFunc = function() {
print("value")
1
}
)
observe({
print("obs")
req(input$x)
v$a <- a()
print(v$a)
})
}
shinyApp(ui, server)
或
server <- function(input, output, session) {
v <- reactiveValues(
a = reactivePoll(5000, session,
checkFunc = function() {
req(input$x)
print("test")
input$x
},
valueFunc = function() {
print("value")
1
}
)
)
observe({
print("obs")
req(input$x)
print(v$a())
})
}