r - 在观察内使用 ReactivePoll (R Shiny)
问题描述
我试图有一个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 值更改时,检查函数内的 print 比以前计算 n + 1 次。
解决方案
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())
})
}
推荐阅读
- ruby-on-rails - 无法运行 Rails 服务器。Sass / Ruby 版本错误
- text - 帖子上文本的 CSS 背景颜色 (Tumblr)
- python - 已安装 Python 模块上的 ImportError
- sql - SQL 如何选择结果以显示 23:00 而不是 23
- node.js - $lookup 聚合中的 $project
- javascript - 确定打开我的 PDF 的应用程序名称?
- php - 在 while 循环中从表单中捕获答案
- python - IOError - \xe2\x80\x8e\xe2\x81\
- amazon-s3 - 弹弓流星s3错误
- angular - 类型 '() => Promise<{}>' 上不存在属性 'then'。- 离子 3