如何在 Scala.js 中创建网络工作者代码
How to create webworker code in Scala.js
如何使用 Scala.js 为网络工作者创建代码?查看文档似乎一切都产生 JavaScript 函数而不是顶级 JavaScript。新的 Worker 构造函数似乎需要顶级 Javascript,而不是文件中的函数。所以在我的 Scala.js 代码中我有:
var myWorker = new Worker("worker.js");
myWorker.onmessage = (e: scala.scalajs.js.Any) =>
{
val e1 = e.asInstanceOf[MessageEvent]
println("Worker message recieved:" -- e1.data.toString)
}
myWorker.postMessage("")
在文件中 worker.js 我有
self.postMessage("from webworker");
消息已按预期拾取并显示在 Web 控制台中。
Scala.js 确实只会根据设计生成非顶级代码。但是,您可以使用 scalaJSOutputWrapper
sbt 设置在生成的 .js 文件的开头 and/or 末尾添加一些任意 JavaScript 代码:
scalaJSOutputWrapper := ("", "example.WorkerMainObject().main();")
这将导致生成的 .js 文件具有指定的顶级语句。
另见
如何使用 Scala.js 为网络工作者创建代码?查看文档似乎一切都产生 JavaScript 函数而不是顶级 JavaScript。新的 Worker 构造函数似乎需要顶级 Javascript,而不是文件中的函数。所以在我的 Scala.js 代码中我有:
var myWorker = new Worker("worker.js");
myWorker.onmessage = (e: scala.scalajs.js.Any) =>
{
val e1 = e.asInstanceOf[MessageEvent]
println("Worker message recieved:" -- e1.data.toString)
}
myWorker.postMessage("")
在文件中 worker.js 我有
self.postMessage("from webworker");
消息已按预期拾取并显示在 Web 控制台中。
Scala.js 确实只会根据设计生成非顶级代码。但是,您可以使用 scalaJSOutputWrapper
sbt 设置在生成的 .js 文件的开头 and/or 末尾添加一些任意 JavaScript 代码:
scalaJSOutputWrapper := ("", "example.WorkerMainObject().main();")
这将导致生成的 .js 文件具有指定的顶级语句。
另见