r - 如何使用代码在 R Shiny 中触发 session$onSessionEnded?
问题描述
我确实在Shiny 应用程序的session$onSessionEnded()
(例如 a DBI::dbDisconnect()
)中执行了一些代码,我想知道直接从 R 代码触发它的最佳实践(例如,当不满足条件时,您关闭应用程序但也想触发这段代码)。
stop()
将停止 R 代码(但不是应用程序本身让“幽灵”应用程序),而stopApp()
将关闭应用程序而不触发session$onSessionEnded()
例如,我应该创建一个我应该在stopApp()
ing 之前调用的函数,还是有办法告诉应用程序触发session$onSessionEnded()
?像一个session$endSession()
?
解决方案
您可以session$close()
从服务器函数中的任何位置调用以停止当前会话。
这是一个例子:
library(shiny)
ui <- fluidPage(
actionButton("stopSession", "Stop session")
)
server <- function(input, output, session) {
session$onSessionEnded(function(){
cat(sprintf("Session %s was closed\n", session$token))
})
observeEvent(input$stopSession, {
cat(sprintf("Closing session %s\n", session$token))
session$close()
})
}
shinyApp(
ui,
server,
onStart = function() {
cat("Doing application setup\n")
onStop(function() {
cat("Doing application cleanup\n")
})
}
)
推荐阅读
- javascript - 使用内存缓存与浏览器缓存的优缺点是什么
- c# - Google API 发现具有空/空属性的 GMail
- c - 你能用 C 让一个字母字符推送做某事吗?
- google-apps-script - 如何计算列中的值以使用它来定义变量以及如何使用 Google 应用脚本将 url 显示为超链接(文本)
- r - ggplot2:如何根据比例渐变更改元素的渲染/绘图顺序?
- android - 嵌入式 Cordova 应用程序包正在 Chrome 中打开,而不是在我的 Android 应用程序中启动
- function - go lang中的函数,有人可以帮我分解一下吗?
- python - 使用 Python IN 运算符检查 DataFrame 中是否存在多个值
- azure-data-factory - Azure 数据工厂数据流文件接收器
- ruby-on-rails - Slim 模板在选项标签中包含链接标签