r - 在闪亮的 R 中的下载处理程序中使用 promise 对象
问题描述
我一直在尝试在我的 Shiny 代码中使用 Futures 库,以使特定任务异步,这很耗时。这个 Future 对象的 promise 处理程序在响应式、eventReactive 和 observeEvent 中运行良好。但是当涉及到下载处理程序时,它不起作用并给我一个错误。
代码如下。我将花费时间的任务放在 Future 中。
futureData <- eventReactive(input$generateButton, {
p <- Progress$new(session, min = 0, max = 100)
p$set(value = 20, message = "Fetching data",detail = "This might take a while...")
pwd <- getwd()
future({
setwd(pwd)
generateReport()
}) %>% finally({~p$set(value=100);~p$close()}) %...!%
(function(error) {
print(paste("Unexpected error: ",error,error$message))
})
})
pptData <- eventReactive(futureData(), {
futureData() %...>% {
futureData <- .
# Build Report Naming Convention
pptId <- paste(futureData$pptTitle, gsub(":", "-", Sys.time()),sep = "_")
pptFlName <- paste(pptId, ".pptx", sep = "")
pptFile <- paste("Reports/", pptFlName, sep = "")
return(list(
"pptId"= pptId,
"pptFlName"= pptFlName,
"pptFile"= pptFile
))
}
})
# Download handler on a button click
output$downloadwb <- downloadHandler(
filename = pptData() %...>% `[[`("wbFlName"),
content = function(file) {
file.copy(pptData() %...>% `[[`("wbFile"), file)
})
我收到以下错误:
警告:enc2utf8 中的错误:参数不是字符向量 [没有可用的堆栈跟踪]
你能帮我解决这个问题吗?有没有人尝试在 Shiny 的下载处理程序中使用 promise 对象?
解决方案
推荐阅读
- vb.net - 如何制作复合用户控件 VB.NET
- python - 我如何确定一个列表中的项目是否大于另一个列表中的项目?
- javascript - 隐藏溢出的css绝对位置动画
- sed - sed 查找字符串,打印所有内容,直到下一个模式
- javascript - JSON.parse().replace() 提供与 str.replace() 不同的结果
- java - 如何在 Java 流的 Lambda 表达式中使用反射?
- python - 如何识别 Python 中是否至少有一个大写字母?
- python - 继承和 __init__
- c# - 是否可以设置 dotnet watch run 以替换更改的 DLL 而无需重新启动整个过程?
- python - 一定范围内的随机列表