27 lines
723 B
CoffeeScript
27 lines
723 B
CoffeeScript
savedGlobal = global # the "global.global" might be deleted later
|
|
|
|
module.exports =
|
|
class CallbacksRegistry
|
|
constructor: ->
|
|
@emptyFunc = -> throw new Error "Browser trying to call a non-exist callback
|
|
in renderer, this usually happens when renderer code forgot to release
|
|
a callback installed on objects in browser when renderer was going to be
|
|
unloaded or released."
|
|
@callbacks = {}
|
|
|
|
add: (callback) ->
|
|
id = Math.random().toString()
|
|
@callbacks[id] = callback
|
|
id
|
|
|
|
get: (id) ->
|
|
@callbacks[id] ? ->
|
|
|
|
call: (id, args...) ->
|
|
@get(id).call savedGlobal, args...
|
|
|
|
apply: (id, args...) ->
|
|
@get(id).apply savedGlobal, args...
|
|
|
|
remove: (id) ->
|
|
delete @callbacks[id]
|