Scala.js: 如何在 Webworker 中访问 self
Scala.js: How to access self in a Webworker
所以我有一个网络工作者:
package pWorker
import scala.scalajs.js._
import org.scalajs.dom._
object WorkScript extends scala.scalajs.js.JSApp
{
def main(): Unit =
{
val x = 4
val y = 8
val z = x + y
println("Worker x + y =" -- z.toString)
}
}
当从主 JavaScript 线程启动时,worker 会根据需要打印到控制台。但我找不到调用等价物的方法:
self.addEventListener('message', function(e) {}
self.postMessage(e.data);
我会从直接 Javascript 文件调用。
与 Scala.js 一样,如果找不到 JavaScript API 的现有类型,您可以选择使用动态类型或编写自己的类型。
动态类型
val self = js.Dynamic.global
self.addEventListener("message", { (e: dom.MessageEvent) =>
...
}
self.postMessage(someData)
静态类型
@js.native
object WorkerGlobal extends js.GlobalScope {
def addEventListener(`type`: String, f: js.Function): Unit = js.native
def postMessage(data: js.Any): Unit = js.native
}
WorkerGlobal.addEventListener("message", { (e: dom.MessageEvent) =>
...
}
WorkerGlobal.postMessage(someData)
所以我有一个网络工作者:
package pWorker
import scala.scalajs.js._
import org.scalajs.dom._
object WorkScript extends scala.scalajs.js.JSApp
{
def main(): Unit =
{
val x = 4
val y = 8
val z = x + y
println("Worker x + y =" -- z.toString)
}
}
当从主 JavaScript 线程启动时,worker 会根据需要打印到控制台。但我找不到调用等价物的方法:
self.addEventListener('message', function(e) {}
self.postMessage(e.data);
我会从直接 Javascript 文件调用。
与 Scala.js 一样,如果找不到 JavaScript API 的现有类型,您可以选择使用动态类型或编写自己的类型。
动态类型
val self = js.Dynamic.global
self.addEventListener("message", { (e: dom.MessageEvent) =>
...
}
self.postMessage(someData)
静态类型
@js.native
object WorkerGlobal extends js.GlobalScope {
def addEventListener(`type`: String, f: js.Function): Unit = js.native
def postMessage(data: js.Any): Unit = js.native
}
WorkerGlobal.addEventListener("message", { (e: dom.MessageEvent) =>
...
}
WorkerGlobal.postMessage(someData)