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

时间:2016-03-10 00:57:03

标签: scala.js

如何使用Scala.js为Web 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控制台中显示。

1 个答案:

答案 0 :(得分:4)

Scala.js确实只会按设计生成非顶级代码。但是,您可以使用scalaJSOutputWrapper sbt设置在生成的.js文件的开头和/或结尾添加一些任意JavaScript代码:

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

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

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