r - 在 R/Shiny 中获取、等待语法?
问题描述
在 R/Shiny 中,我们可以使用 library(promises) 和 library(future) 来异步处理事件。但我似乎无法找到一种方法将它与 library(httr) 结合起来做类似于fetch/await/async的事情,从而设置一个 promise,当 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)
解决方案
推荐阅读
- typescript - 如何使用 TypeScript 在 Vue2.x 类组件中正确注释
- next.js - 在 nextjs 上使用 GrapeJS
- reactjs - React 类函数箭头
- reactjs - 使用布尔值的数组依赖性时,useEffect 始终有效
- ruby-on-rails-5 - 无方法错误未定义方法“*”用于 nil:NilClass
- python - 错误:尝试在没有已知父包的情况下进行相对导入
- r - 将每行中的所有变量转换为每行总和的百分比?
- java - Android:如何从服务调用方法
- python - Webdriver cannot find text on a page
- python-3.x - 将主要风向转换为度数