Shiny - 如何在进程完成时告诉客户端

时间:2016-06-09 21:25:29

标签: r text shiny render observers

我对Shiny完全陌生,我无法在需要时获取textOutput。

observeEvent(input$btnPersistencia, {
  output$txtProtActual <- renderText("PROCESSING...")
  print("This does print in console")

  #SomeCodeHere that takes about 10 seconds to finish

  output$txtProtActual <- renderText(paste("Archivo Persistencia Actual: ", basename(values$file), "\n Dim: ", isolate(input$sliderDimension), "\n Filtr: ", isolate(input$txtMaxFil)))
})

该文字未显示&#34;正在处理......&#34;而#SomeCodeHere正在运行。我真的不明白为什么。不应该有用吗?

文本仅在observeEvent结束后呈现。我知道这是因为如果我删除了SECOND renderText(),那么文本将采用值&#34; Processing ...&#34;处理结束时。

如果这是正常行为,有没有办法在observeEvent结束之前强制渲染?

编辑:

是否有其他(任何)方法可以实现我想要的目标?

1 个答案:

答案 0 :(得分:1)

发表评论作为答案(谢谢!)

有关进度条的文章为here,参考文件为here。 这是使用进度条的代码:

observeEvent(input$btnPersistencia, {
   withProgress(message = 'PROCESSING...', value = 0, {
       incProgress(1/2)
       #SomeCodeHere that takes about 10 seconds to finish
       Sys.sleep(10)
   })

   output$txtProtActual <- renderText({
     paste("Archivo Persistencia Actual: ", basename(values$file),
       "\n Dim: ", isolate(input$sliderDimension),
       "\n Filtr: ", isolate(input$txtMaxFil)
     )
   })
 })

虽然它与您的问题无关,但我发现您已将output置于observeEvent内且isolate包裹inputs $args = array( 'posts_per_page' => 5, 'meta_query' => array( 'relation' => 'AND', '_post_views' => array( 'key' => '_post_views', 'type' => 'NUMERIC', 'compare' => 'LIKE' ), '_post_like_count' => array( 'key' => '_post_like_count', 'type' => 'NUMERIC', 'compare' => 'LIKE' ), ), 'orderby' => array( '_post_views' => 'DESC', '_post_like_count' => 'DESC' ) ); 1}}。

其中一位有光泽的开发人员在first two videos of shiny's 2016 conference谈论观察员。它帮助我更好地理解如何使用观察者,我认为你可能会发现它很有用。 :