diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/syscall/js/callback.go | 8 | ||||
| -rw-r--r-- | src/syscall/js/js.go | 16 |
2 files changed, 12 insertions, 12 deletions
diff --git a/src/syscall/js/callback.go b/src/syscall/js/callback.go index fa8a03ab0c..de9da888fd 100644 --- a/src/syscall/js/callback.go +++ b/src/syscall/js/callback.go @@ -11,10 +11,10 @@ import "sync" var pendingCallbacks = Global().Get("Array").New() var makeCallbackHelper = Global().Call("eval", ` - (function(id, pendingCallbacks, resolveCallbackPromise) { + (function(id, pendingCallbacks, go) { return function() { pendingCallbacks.push({ id: id, args: arguments }); - resolveCallbackPromise(); + go._resolveCallbackPromise(); }; }) `) @@ -71,7 +71,7 @@ func NewCallback(fn func(args []Value)) Callback { callbacks[id] = fn callbacksMu.Unlock() return Callback{ - Value: makeCallbackHelper.Invoke(id, pendingCallbacks, resolveCallbackPromise), + Value: makeCallbackHelper.Invoke(id, pendingCallbacks, jsGo), id: id, } } @@ -116,7 +116,7 @@ func (c Callback) Release() { var callbackLoopOnce sync.Once func callbackLoop() { - for { + for !jsGo.Get("_callbackShutdown").Bool() { sleepUntilCallback() for { cb := pendingCallbacks.Call("shift") diff --git a/src/syscall/js/js.go b/src/syscall/js/js.go index 0cc98bd52c..4b55193c41 100644 --- a/src/syscall/js/js.go +++ b/src/syscall/js/js.go @@ -56,14 +56,14 @@ func (e Error) Error() string { } var ( - valueNaN = predefValue(0) - valueUndefined = predefValue(1) - valueNull = predefValue(2) - valueTrue = predefValue(3) - valueFalse = predefValue(4) - valueGlobal = predefValue(5) - memory = predefValue(6) // WebAssembly linear memory - resolveCallbackPromise = predefValue(7) // function that the callback helper uses to resume the execution of Go's WebAssembly code + valueNaN = predefValue(0) + valueUndefined = predefValue(1) + valueNull = predefValue(2) + valueTrue = predefValue(3) + valueFalse = predefValue(4) + valueGlobal = predefValue(5) + memory = predefValue(6) // WebAssembly linear memory + jsGo = predefValue(7) // instance of the Go class in JavaScript ) // Undefined returns the JavaScript value "undefined". |
