小编joe*_*ath的帖子

按钮点击闪亮时停止耗时的功能

如果我问一个非常基本的问题,我会提前道歉.我是R和Shiny的新手,我无法在任何地方找到解决这个问题的方法.

在这里,我有一个非常基本的shinyApp,在ui.R中有两个按钮,Start按钮将调用一个循环运行的函数,并在屏幕上显示一些东西.我有一个停止按钮,应该能够终止此循环.

我无法获得终止无限循环的停止按钮,任何想法?

以下是我试过的.如果我做错了,请原谅我

#ui.R
library(shiny)

shinyUI(fluidPage(
    actionButton("startSearch", label = "Start Search"),
    actionButton("stopSearch",  label = "Stop Search")
))

#server.R
library(shiny)

shinyServer(function(input, output, session){

  initial.stop <- 0
  observeEvent(input$startSearch,
   {
     while(TRUE) 
     {
       Sys.sleep(1)
       if (initial.stop < input$stopSearch) 
       {
         print('break')
         stop('error')
       }
       print("Infinite loop")
     }
   })
})
Run Code Online (Sandbox Code Playgroud)

这是一个问题,因为R是单线程的,而应用程序没有响应,因为它陷入无限循环.实际上,我们在for循环中运行了大量耗时的计算,我们需要在用户单击停止时在当前迭代之后停止计算.

有没有办法解决这个问题?任何建议都会有所帮助.谢谢

r infinite-loop shiny

6
推荐指数
0
解决办法
273
查看次数

标签 统计

infinite-loop ×1

r ×1

shiny ×1