我正在使用“未来”库来加快我闪亮的应用程序的启动时间。
在global.R脚本中,我需要加载一些大的RDS数据。由于我不希望用户在加载数据时等待1-2分钟,因此我使用Future将数据的加载转移到专用内核上:
global.R
...
library(future)
plan(multicore)
...
...
FDA_path <- file.path(data_path, "FDA")
# Load data
fda_data_path <- file.path(FDA_path, "fda_labels.RDS")
fda_filter_path <- file.path(FDA_path, "fda_filters.RDS")
fda_data_main %<-% readRDS(fda_data_path)
fda_filters_df %<-% readRDS(fda_filter_path)
...
一切正常,当后台加载数据时,用户会在几秒钟内看到应用程序打开。
一旦应用出现,由于用户正在加载,用户仍无法使用数据,因此我想向用户显示通知。 我已经尝试过了:
Server.R
fdaDataSearch <- reactive({
if(!resolved(futureOf(fda_data_main))){
showNotification("loading FDA data",type="warning")
}
fda_data_main %>% filter(id %in% fdaDataSearch_ids())
})
此代码用于生成呈现给用户的数据框。 根据“未来”文档(https://cran.r-project.org/web/packages/future/vignettes/future-1-overview.html),“已解决”功能可用于监视过程何时结束。所以我想要的是,当用户尝试生成数据框时,如果进程仍在运行,则会显示一条通知。
该指令不起作用,并且我得到的错误消息是:
警告:错误:在环境‘中找不到未来('fda_data_main')
为什么会出现此错误?还有其他方法可以检查过程是否结束并通知用户?