var workerResponded = false, workerCallbackId = -1; (() => { var messageBuffer = null, buffer = 0; function flushMessages() { if (!messageBuffer) return; if (runtimeInitialized) { var temp = messageBuffer; messageBuffer = null; temp.forEach((message) => onmessage(message)); } } function messageResender() { flushMessages(); if (messageBuffer) { setTimeout(messageResender, 100); // still more to do } } onmessage = (msg) => { // if main has not yet been called (mem init file, other async things), buffer messages if (!runtimeInitialized) { if (!messageBuffer) { messageBuffer = []; setTimeout(messageResender, 100); } messageBuffer.push(msg); return; } flushMessages(); var func = Module['_' + msg.data['funcName']]; if (!func) abort('invalid worker function to call: ' + msg.data['funcName']); var data = msg.data['data']; if (data) { if (!data.byteLength) data = new Uint8Array(data); buffer = _realloc(buffer, data.length); HEAPU8.set(data, buffer); } workerResponded = false; workerCallbackId = msg.data['callbackId']; if (data) { func(buffer, data.length); } else { func(0, 0); } } })();