我正在尝试编写一个简单的scala.js应用程序.我现在的问题是我无法弄清楚为什么我无法保存从服务器/用户获得的数据.
更具体地说,这里是代码片段:
<!-- in my html -->
<script>
example.RoomFrontend().setName("@name");
</script>
Run Code Online (Sandbox Code Playgroud)
// in my scala.js src
@JSExport
object RoomFrontend extends js.JSApp {
var username: Option[String] = None
@JSExport
def setName(name: String): Unit = {
username = Some(name)
g.console.debug(s"Got user name: $name")
}
case object TestUserMessage
class Render(ctx: dom.CanvasRenderingContext2D) extends Actor {
override def receive: Receive = {
case TestUserMessage => g.console.debug(s"user name is $username")
}
}
@JSExport
def main(): Unit = {
//...
// renderer is akka actorRef
dom.window.setInterval(() => render ! TestUserMessage, 50)
}
Run Code Online (Sandbox Code Playgroud)
那么,接下来会发生什么.我成功输入了用户名,例如Blah,我在js控制台中看到了"有用户名:Blah"的好消息,但问题是,每次调用渲染器时,都说用户名是None.
我想这可能是由于我错误地在一个线程中分配一个变量(在js主线程中,我不知道它是正确的定义),并从actor线程读取这个变量......但同样的故事发生在变量中存储在演员本身.
我想我不明白应该如何使用scala.js的基本内容,因为我对scala和js都是新手.拜托,有人可以解释这种奇怪的行为吗?
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |