aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/syscall/js/callback.go8
-rw-r--r--src/syscall/js/js.go16
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".