2017-02-21 33 views
0

Я хочу запустить код в цикле каждые n секунд на основе ввода пользователем. Я делаю это с помощью reactiveTimer().
Приложение читает из файла, но когда нет ничего более читаемого или пользователь нажал на кнопку, я хочу закончить цикл.Как прекратить реагироватьТимер в Shiny

мой код кажется на стороне сервера следующим образом:

observeEvent(input$start, { 
    autoInvalidate <- reactiveTimer(input$timerValue) 

    output$plot <- renderPlot({ 
     autoInvalidate() 
     ...code... 
    } 
} 

Спасибо за любые советы

ответ

0

Если хотите определенно остановить таймер, вы можете установить его в 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) 
     }) 
+0

Большое вам спасибо, отлично работает, вот что я нашел;) – TomasG

 Смежные вопросы

  • Нет связанных вопросов^_^