我正在努力了解如何使用 WebIO
。从文档中,这将是一个将值发送到 javascript 的示例:
using WebIO
s = Scope()
obs = Observable(s, "logme", "")
onjs(
s, "logme",
js"""
function(newValue) {
console.log(newValue);
}
"""
)
现在,为了测试它,我在 REPL 中运行它,然后是
using Mux
WebIO.webio_serve(
page("/", req -> s)
)
然后将我的浏览器 (Brave) 指向 localhost:8000 并打开控制台(通过开发人员工具)。此时,我希望在 REPL 中运行 obs[] = "hi there"
会使该消息显示在控制台中。但是没有任何反应。为什么我对预期行为的理解是错误的?我应该怎么做才能让 javascript 控制台记录一条我写入 julia 端可观察对象的消息?
最佳答案
我猜文档中有错误。问题是可观察对象上没有听众。即,julia> obs
返回具有 0 个监听器的 Observable{String}。
您可以通过 WebIO.ensure_sync(s, "logme")
添加监听器>,或者你可以这样写:
using Mux, WebIO, JSExpr
s = Scope()
obs = Observable(s, "logme", "")
onjs(obs,
js"""
function(newValue) {
console.log(newValue);
}
"""
)
webio_serve(page("/", req -> s), 8000)
obs[] = "22"
然后 Web 控制台打印出值 22。
关于javascript - 如何使用 WebIO 将值从 javascript 发送到 julia?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71661147/