Проблемы с использованием обещаний с блестящими
Предположим, у меня есть блестящее приложение, операция которого занимает несколько секунд, а сайт занят. На многоядерной машине я хотел бы использовать преимущества этих ядер, чтобы свести к минимуму время ожидания пользователя. я думал о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.
Приветствуются любые идеи о том, как перевести мой синхронный код в асинхронный.