Проблемы с использованием обещаний с блестящими

Предположим, у меня есть блестящее приложение, операция которого занимает несколько секунд, а сайт занят. На многоядерной машине я хотел бы использовать преимущества этих ядер, чтобы свести к минимуму время ожидания пользователя. я думал оpromisesздесь может помочь библиотека.

Мой текущий код синхронного сервера выглядит примерно так:

      library(shiny)

observeEvent(input$button_press, {
  
  c(var1, 
    var2, 
    var3, 
    var4,
    var5) %<-% expensive_operation(
      arg1,
      arg2,
      arg3)
  
  # Draw graph --------------------------------------------------------------
  output$cc_plot <- renderPlot({
    cc_plot(var1)
  })
}

Пользователь вводит некоторую информацию на веб-странице и нажимает кнопку. Происходят расчеты иzeallotразделяет их на отдельные переменные из возвращаемого списка.

Исходя из этого, я попытался сделать его асинхронным:

      library(future, exclude = c("%->%", "%<-%"))
library(promises)
library(zeallot)
library(shiny)

observeEvent(input$button_press, {
  
  # Draw graph --------------------------------------------------------------
  output$cc_plot <- renderPlot({
    
    c(var1, 
      var2, 
      var3, 
      var4,
      var5) %<-% future_promise(expensive_operation(
        arg1,
        arg2,
        arg3)) %...>%
    
    cc_plot(var1)
  })
}

Это приводит к ошибке,object 'var1' not found

Насколько я понимаю, использование « promise pipe » предотвратило бы вызов cc_plot() до того, как стало известно var1.

Приветствуются любые идеи о том, как перевести мой синхронный код в асинхронный.

0 ответов

Другие вопросы по тегам