The top level for the worker is currently like this:
(defn decode-message [event]
(condp = (aget (.-data event) "command")
"channel" (.postMessage js/self (run-function-name (.-data event)))
"channel-arraybuffer" (post-array-buffer (run-function-name (.-data event)))))
(defn bootstrap []
(set! (.-onmessage js/self) decode-message))
If (run-function-name (.-data event)) returns a promise, this won't work. This can be hard to avoid when using code from javascript programmers, for example https://github.com/stephenliberty/excel-builder.js . I think it may be useful to be able to opt into behavior more like this:
(defn decode-message [event]
(condp = (aget (.-data event) "command")
"channel"(let [promise (run-function-name (.-data event))]
(.then promise (fn [data]
(.postMessage js/self data))))))
...
Or maybe detect if it is a promise, then do something reasonable.
The top level for the worker is currently like this:
If
(run-function-name (.-data event))returns a promise, this won't work. This can be hard to avoid when using code from javascript programmers, for example https://github.com/stephenliberty/excel-builder.js . I think it may be useful to be able to opt into behavior more like this:Or maybe detect if it is a promise, then do something reasonable.