Use promise for initialization. Use postRun hook to resolve.

This commit is contained in:
Michael Droettboom 2018-04-17 10:43:26 -04:00
parent 93469d2996
commit 2a1a5b722e
1 changed files with 14 additions and 8 deletions

View File

@ -1,7 +1,6 @@
{
var languagePluginLoader = new Promise((resolve, reject) => {
let baseURL = "{{DEPLOY}}";
let wasmURL = baseURL + 'pyodide.asm.wasm?x=' + Date.now();
let wasmURL = `${baseURL}pyodide.asm.wasm?x=${Date.now()}`;
let wasmXHR = new XMLHttpRequest();
wasmXHR.open('GET', wasmURL, true);
wasmXHR.responseType = 'arraybuffer';
@ -11,14 +10,21 @@
if (wasmXHR.status === 200 || wasmXHR.status === 0) {
Module.wasmBinary = wasmXHR.response;
} else {
alert("Couldn't download the pyodide.asm.wasm binary. Response was " + wasmXHR.status);
alert(`Couldn't download the pyodide.asm.wasm binary. Response was ${wasmXHR.status}`);
reject();
}
Module.baseURL = baseURL;
var script = document.createElement('script');
script.onload = function() { window.pyodide = pyodide(Module); };
script.src = baseURL + "pyodide.asm.js";
Module.postRun = () => {
resolve();
}
let script = document.createElement('script');
script.src = `${baseURL}pyodide.asm.js`;
script.onload = () => {
window.pyodide = pyodide(Module);
};
document.body.appendChild(script);
};
wasmXHR.send(null);
}
});
languagePluginLoader