问题描述
在 R/Shiny 中,我们可以使用 library(promises) 和 library(future) 来异步处理事件。但是我似乎无法找到一种方法将它与 library(httr) 结合起来做类似于 fetch/await/async 的事情,您可以在其中设置一个承诺,当 httr 请求成功时它会解决。是否可以在 R/Shiny 中设置在 httr 请求成功时解决的承诺?或者你可以只做类似下面的事情,首先检查是否会出现 http 错误?
library(shiny)
library(promises)
library(future)
plan(multisession)
ui <- fluidPage(
textoutput("success"),textoutput("fail")
)
server <- function(input,output,session) {
output$success <- renderText({
# 201 success command should return
get_command_1 <- httr::GET("http://httpbin.org/status/201")
print(http_error(get_command_1))
if(http_error(get_command_1)) {
future(get_command_1) %...>%
httr::content("parsed")
}
else {
paste0(get_command_1$url," Failed")
}
})
output$fail <- renderText({
# but not 500 error command
get_command_2 <- httr::GET("http://httpbin.org/status/500")
print(http_error(get_command_2))
if(http_error(get_command_2)) {
future(get_command_2) %...>%
httr::content("parsed")
}
else {
paste0(get_command_2$url," Failed")
}
})
}
shinyApp(ui = ui,server = server)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)