Scala.js:如何在Webworker中访问self

时间:2016-03-10 20:31:04

标签: scala.js

所以我有一个网络工作者:

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文件调用。

1 个答案:

答案 0 :(得分:5)

与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)
相关问题