下面给出的代码将输出“ 1”,“ 2”而不是“ 3”
有人可以解释为什么输出中不显示三个的原因吗?
我尝试了许多方法,但仍然无法弄清楚出了什么问题。
library(shiny)
library(plotly)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
actionButton("reset", "Reset"),
plotlyOutput("plot")
)
server <- function(input, output){
output[["plot"]] <- renderPlotly({
df <- data.frame(
x = c(1,2,1),
y = c(1,2,1)
)
df %>%
plot_ly(
x = ~x,
y = ~y,
source = "A",
type = 'scatter',
mode = 'markers',
marker = list(size = 20),
showlegend = FALSE
)
})
observeEvent(input[["reset"]], {
runjs("Shiny.setInputValue('plotly_selected-A', null);")
})
observe({ # just to test
print(event_data("plotly_selected", source = "A"))
})
}
shinyApp(ui, server)
答案 0 :(得分:0)
如xavier所评论,这不应仅编译。您可以尝试的一种方法是:
const IamCallBack = () => { console.log("three");};
function f1(callback) {
console.log("two");
callback();
}
f1(IamCallBack);
答案 1 :(得分:0)
以下是如何使用回调的示例:
const http=require('http');
const fs=require('fs');
function f1(arg_string,callback)
{
console.log(arg_string);
callback("three");
}
const server=http.createServer((req,res)=>{
});
server.listen(9800);
console.log("one");
f1("two",function(cb_string){
console.log(cb_string);
});
这将打印:
one
two
three
首先,给f1
的参数提供“两个”,将其打印到控制台。
函数完成后,它将调用callback
函数。
我们将回调函数定义为:
function(cb_string){
console.log(cb_string);
}
在调用f1
时将其作为第二个参数提供。然后f1
完成运行后,它将调用为其提供的任何函数:
function f1(arg_string,callback)
{
console.log(arg_string);
callback("three"); //<--- whatever function you used to call it
}
执行回调函数时,它会输出“三个”,因为这是f1
返回给您的原始调用者的信息:
console.log(cb_string);