gpt4 book ai didi

r - 如何区分应用程序崩溃和用户关闭

转载 作者:行者123 更新时间:2023-12-03 16:38:12 25 4
gpt4 key购买 nike

我想根据用户关闭应用程序还是应用程序崩溃来有条件地运行代码。session$onSessionEnded无论 session 如何结束都会运行。我在 session 中没有找到其他函数或变量看起来它可能是 session 如何结束的一个指标。
基本上我想使用类似于下面示例应用程序中注释代码的东西。哪里crashed如果我点击按钮会被打印,但是 user ended如果我关闭应用程序(例如,关闭浏览器)将被打印。

library(shiny)
ui <- fluidPage(actionButton('crash', 'crash me'))
server <- function(input, output, session){
observeEvent(input$crash, stop())
session$onSessionEnded(function() {
# if (crashed){
# print('crashed')
# }else{
# print('user ended')
# }
})
}
shinyApp(ui, server)

最佳答案

您可以使用 shiny.error定义自定义错误处理程序的选项。
尝试:

library(shiny)

ui <- fluidPage(actionButton('crash', 'crash me'))

errorfn <- function() {crashed <<- T }
options(shiny.error = errorfn)
crashed <- F

server <- function(input, output, session){

session$userData$starttime <- Sys.time()
observeEvent(input$crash, stop())
session$onSessionEnded(function() {
if (crashed) print(paste("Started at :",session$userData$starttime, " - Crashed at : " , Sys.time())) else print("Not crashed, ended by user")
stopApp(crashed)
crashed <<- F
})
}
runApp(list(ui=ui, server=server))

[1] "Started at : 2020-09-15 17:27:41 - Crashed at : 2020-09-15 17:27:45"
[1] TRUE

关于r - 如何区分应用程序崩溃和用户关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58432395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com