scala.js - 如何在 Scala.js 中创建 webworker 代码

标签 scala.js

如何使用 Scala.js 为网络 worker 创建代码?查看文档,一切似乎都产生了 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 文件的开头和/或结尾添加一些任意 JavaScript 代码:

scalaJSOutputWrapper := ("", "example.WorkerMainObject().main();")

这将导致生成的 .js 文件具有指定的顶级语句。

另见 https://stackoverflow.com/a/34764513/1829647

关于scala.js - 如何在 Scala.js 中创建 webworker 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905658/

相关文章:

sbt - ScalaJS 插件 0.6.23 : "value %%% is not a member of String"

javascript - 在 scala.js 中使用 chart.js - 未捕获的类型错误未定义不是函数

scala.js - 使用 scala.js 方法作为回调

Scala 3 的 Scala.JS 配置?

scala - 如何调试scalajs链接器错误: non-existent method java. lang.Class.getDeclaredFields

javascript - 如何将 log4javascript 与 ScalaJS/PhantomJS 一起使用

scala.js - 是否可以组合两个 js.Dynamic 对象

Scala JS 中的 Ajax 调用响应空列表

reactjs - 使用 scalajs Diode 和带有为 Posts (序列)定义的处理程序的 ApplicationCircuit,我可以以某种方式将其映射到 ModelProxy[Post] 个体吗?

Scala.js:如何将 Seq[T] 转换为 js.Array[T]