gpt4 book ai didi

r - 强制渲染已经计算的 react 元素

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

我正在尝试构建一个 Shiny 的应用程序,通过不同的 render* 函数输出多个结果。

问题是这些结果之一需要一些时间来计算。所以我希望shiny尽快呈现快速的结果。

这是一些代码来说明

# ui.R
library(shiny)

shinyUI(fluidPage(
textOutput("res1"),
textOutput('res2')
))

# server.R
library(shiny)

shinyServer(function(input, output) {

output$res1 = renderText({
"shows up instantly"
})

output$res2 = renderText({
Sys.sleep(3)
"shows up after 3 sec"
})
})

目前,网页保持空白 3 秒,两个元素同时呈现。

我的问题是以下一个:是否可以强制执行 output$res1output$res2 之前执行并且在长计算开始之前将结果发送到浏览器?

最佳答案

退房 invalidateLater否则,如果您只想渲染文本,您可以使用以下命令直接向客户端发送文本:

# ui.R
library(shiny)

ui <- shinyUI(fluidPage(
tags$head(
tags$script(
HTML("
Shiny.addCustomMessageHandler ('print',function (message) {
$('#'+message.selector).html(message.html);
console.log(message);
});
")
)
),
textOutput("res1"),
textOutput('res2')
))

# server.R
server <- shinyServer(function(input, output, session) {
session$sendCustomMessage(type = 'print', message = list(selector = 'res1', html = "shows up instantly"))
Sys.sleep(3)
session$sendCustomMessage(type = 'print', message = list(selector = 'res2', html = "shows up after 3 sec"))
})

shinyApp(ui = ui, server = server)

关于r - 强制渲染已经计算的 react 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33241733/

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