如何在 Shiny 中终止 reactiveTimer
How to terminate reactiveTimer in Shiny
我想 运行 根据用户输入每 n 秒循环一些代码。我用 reactiveTimer() 来做。
应用程序正在从文件中读取,但当没有更多内容可读或用户单击按钮时,我想终止循环。
我的代码在服务器端看起来如下:
observeEvent(input$start, {
autoInvalidate <- reactiveTimer(input$timerValue)
output$plot <- renderPlot({
autoInvalidate()
...code...
}
}
感谢任何建议
如果想绝对停止定时器,你可以将它设置为reactiveTimer(Inf)
否则你需要保持它运行并且你可以使用一个布尔值来存储它的状态开和关,如下所示示例:
library(shiny)
shinyApp(ui=fluidPage(textOutput("mytext"),
actionButton("s0","manual"),
actionButton("s1","start"),
actionButton("s2","stop"),
actionButton("s3","terminate")),
server=function(input, output){
my<-reactiveValues(inc=0, timer=reactiveTimer(100), started=FALSE)
observeEvent(input$s0, {my$inc<-my$inc+1})
observeEvent(input$s1, {my$started<-TRUE})
observeEvent(input$s2, {my$started<-FALSE})
observeEvent(input$s3, {my$timer<-reactiveTimer(Inf)})
observe({
my$timer()
if(isolate(my$started))
my$inc<-isolate(my$inc)+1
})
output$mytext <- renderText(my$inc)
})
我想 运行 根据用户输入每 n 秒循环一些代码。我用 reactiveTimer() 来做。
应用程序正在从文件中读取,但当没有更多内容可读或用户单击按钮时,我想终止循环。
我的代码在服务器端看起来如下:
observeEvent(input$start, {
autoInvalidate <- reactiveTimer(input$timerValue)
output$plot <- renderPlot({
autoInvalidate()
...code...
}
}
感谢任何建议
如果想绝对停止定时器,你可以将它设置为reactiveTimer(Inf)
否则你需要保持它运行并且你可以使用一个布尔值来存储它的状态开和关,如下所示示例:
library(shiny)
shinyApp(ui=fluidPage(textOutput("mytext"),
actionButton("s0","manual"),
actionButton("s1","start"),
actionButton("s2","stop"),
actionButton("s3","terminate")),
server=function(input, output){
my<-reactiveValues(inc=0, timer=reactiveTimer(100), started=FALSE)
observeEvent(input$s0, {my$inc<-my$inc+1})
observeEvent(input$s1, {my$started<-TRUE})
observeEvent(input$s2, {my$started<-FALSE})
observeEvent(input$s3, {my$timer<-reactiveTimer(Inf)})
observe({
my$timer()
if(isolate(my$started))
my$inc<-isolate(my$inc)+1
})
output$mytext <- renderText(my$inc)
})