add a generic webworker file

This commit is contained in:
Jason Stafford 2019-01-31 15:07:48 -08:00
parent 8e8ac26be9
commit e1fb1b966e
2 changed files with 27 additions and 1 deletions

View File

@ -57,7 +57,8 @@ all: build/pyodide.asm.js \
build/renderedhtml.css \
build/test.data \
build/packages.json \
build/test.html
build/test.html \
build/webworker.js
build/pyodide.asm.js: src/main.bc src/jsimport.bc src/jsproxy.bc src/js2python.bc \
@ -112,6 +113,8 @@ build/test.html: src/test.html
build/renderedhtml.css: src/renderedhtml.less
lessc $< $@
build/webworker.js: src/webworker.js
cp $< $@
test: all
pytest test/ -v

23
src/webworker.js Normal file
View File

@ -0,0 +1,23 @@
importScripts('./pyodide.js')
var onmessage = function(e) { // eslint-disable-line no-unused-vars
languagePluginLoader.then(() => {
const data = e.data;
const keys = Object.keys(data);
for (let key of keys) {
if (key !== 'python') {
// Keys other than python must be arguments for the python script.
// Set them on self, so that `from js import key` works.
self[key] = data[key];
}
}
self.pyodide.runPythonAsync(data.python, () => {}).then((results) => {
self.postMessage({results});
}).catch((err) => {
// if you prefer messages with the error
self.postMessage({error: err.message});
// if you prefer onerror events
// setTimeout(() => { throw err; });
});
});
}