1 | function Worker () => Threads = this; class
|
2 | (code) ->
|
3 | @thread = t = Threads.create!
|
4 | t.on \message (args) ~> @onmessage? data: args
|
5 | t.on \error (args) ~> @onerror? args
|
6 | t.on \close -> t.destroy!
|
7 | @terminate = -> t.destroy!
|
8 | @add-event-listener = (event, cb) ~>
|
9 | if event is \message
|
10 | @onmessage = cb
|
11 | else
|
12 | t.on event, cb
|
13 | @dispatch-event = (event) -> t.emitSerialized event.type, event
|
14 | @post-message = (data) -> t.emitSerialized \message {data}
|
15 | if typeof code is \function
|
16 | t.eval "(#code)()"
|
17 | else if code?
|
18 | t.load code
|