[R-es] Promises Future en shiny no me funciona

Jesús Para Fernández j@p@r@@fern@ndez @ending from hotm@il@com
Jue Nov 22 12:08:22 CET 2018


Buenas

Lo pregunté tb en stackoverflow y lo que mandan hacer es mandar a future a un segundo plano, que es lo queno estaba haciendo.

Os pego el enlace
https://stackoverflow.com/questions/53407004/shiny-promises-future-is-not-working-on-eventreactive
[https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon@2.png?v=73d79a89bded]<https://stackoverflow.com/questions/53407004/shiny-promises-future-is-not-working-on-eventreactive>

r - Shiny promises future is not working on eventReactive - Stack Overflow<https://stackoverflow.com/questions/53407004/shiny-promises-future-is-not-working-on-eventreactive>
I have an inputButton than when you click it, 2 querys to mysql database are done. One is a heavy one (more than 10 secs) and the other is light (less than 0.01sec to get data).
stackoverflow.com



Gracias!
Jesús
________________________________
De: Fernando Fernández <fernando.fernandez.gonzalez using gmail.com>
Enviado: miércoles, 21 de noviembre de 2018 9:36
Para: Jesús Para Fernández
Cc: R help CRAN
Asunto: Re: [R-es] Promises Future en shiny no me funciona

En stack overflow veo esta possible explicación :

  *   An eventReactive creates an object that you define like reactive does, but with out usual chain-reaction behavior you get from reactive. However it is lazily evaluated and cached like the other reactives.

  *   An observeEvent can not create an object that you define (it creates something else). It is immediately evaluated and not cached. It is for causing side-effects.

So if you need a data frame, or vector, or plot or something, but want to decouple from the usual reactive chain-reactions, use eventReactive.

If you just want to cause an immediate side effect, observeEvent is your ticket


Prueba a usar reactive en lugar de eventReactive y dentro de cada función reactive tomar una dependencia de input$go.


El mié., 21 nov. 2018 8:48, Jesús Para Fernández <j.para.fernandez using hotmail.com<mailto:j.para.fernandez using hotmail.com>> escribió:
Buenas,

Estoy intentando que al ejectuar un boton en shiny me cargue de manera asincrona dos consultas. Una es a una consulta sql pesada (tarda 10 segundos) y la otra es una sql ligera (tarda 0 segundos). Intento que el resultado de la consulta ligera se muestre mientras se espera al resulatdo de la consulta pesada, pero no lo consigo.

Estoy usando promises con future, en linux, pero no me funciona 🙁 , ya que me muestra el ersultado del proceso pesado y el ligero solo cuando se ha ejecutado ya el pesado.

Para simular las consultas, eh creado la funcion heavyFunction.... Aqui os pongo mi código. ¿Qué creeis que puede estar pasando? Lo curioso es que si os fijais en la consola, si que funciona bien.

library(future)
library(promises)
plan(multiprocess)

heavyFunction <- function(n){
  Sys.sleep(n)
  print(n)
}


ui <- fluidPage(
  actionButton("go","Show the data"),
  textOutput("result0sec"),
  textOutput("result10sec")

)

server <- function(input,output,session){


  data0 <- eventReactive(input$go,{
    heavyFunction(0)


  })

  data10 <- eventReactive(input$go,{
    future(heavyFunction(10))


  })
  output$result0sec <- renderText({
    data <- data0()
    print(data)
  })


  output$result10sec <- renderText({
    data <- data10()
    data%...>%print()
  })




}
shinyApp(ui,server)

        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es using r-project.org<mailto:R-help-es using r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-help-es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es