package poc import org.scalajs.dom import org.scalajs.dom.raw.{Event, Worker} import scalatags.JsDom.all._ import scala.scalajs.js.annotation.JSExport import scala.scalajs.js @JSExport("Main") object Main { @JSExport def main(): Unit = { val worker = new Worker("worker.js") var x = 0 val root = dom.document.getElementById("root") val click: js.Function1[Event, _] = (e: Event) => { x += 1 if (x > 3) worker.postMessage("Testing") } root.appendChild( div( h1("Hello!"), button(id := "post", onclick := click, "Send message") ).render ) worker.onmessage = (e: js.Any) => { root.appendChild(div(e.asInstanceOf[dom.MessageEvent].data.asInstanceOf[String]).render) } worker.postMessage("Testing") def nextAnimationFrame(time: Double): Unit = { dom.window.requestAnimationFrame(nextAnimationFrame _) // worker.postMessage(s"Time $time") } dom.window.requestAnimationFrame(nextAnimationFrame _) } }