libcurl.load_wasm now returns a promise

This commit is contained in:
Allen Ding 2024-09-04 12:06:27 -07:00
parent 5bcff0228b
commit 15a6df827e
3 changed files with 51 additions and 10 deletions

View file

@ -77,22 +77,32 @@ function main() {
wasm_ready = true;
_init_curl();
if (ENVIRONMENT_IS_WEB) {
let load_event = new Event("libcurl_load");
document.dispatchEvent(load_event);
}
if (!main_session && websocket_url) {
setup_main_session();
}
let load_event = new Event("libcurl_load");
api.events.dispatchEvent(load_event);
api.onload();
if (ENVIRONMENT_IS_WEB) {
document.dispatchEvent(load_event);
}
}
function load_wasm(url) {
wasmBinaryFile = url;
createWasm();
run();
if (wasm_ready) return;
//skip this if we are running in single file mode
if (!isDataURI(wasmBinaryFile)) {
wasmBinaryFile = url;
createWasm();
run();
}
return new Promise((resolve) => {
if (wasm_ready) return resolve();
api.events.addEventListener("libcurl_load", () => {resolve()});
});
}
Module.onRuntimeInitialized = main;
@ -128,7 +138,8 @@ api = {
get logger() {return logger},
set logger(func) {logger = func},
onload() {}
onload() {},
events: new EventTarget()
};
return api;

20
client/use_bundled.html Normal file
View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<link rel="icon" href="data:;base64,=">
<script src="./out/libcurl_full.js"></script>
<script>
async function main() {
console.log("libcurl.js ready?", libcurl.ready);
await libcurl.load_wasm();
console.log("libcurl.js ready?", libcurl.ready);
console.log("loaded libcurl.js", libcurl.version.lib);
}
main();
</script>
</head>
<body>
<p>emscripten tests</p>
</body>
</html>