@loaders.gl/core
Version:
Framework-independent loaders for 3D graphics formats
47 lines (40 loc) • 956 B
JavaScript
import { getWorkerURL, getTransferList } from './worker-utils';
let count = 0;
function defaultOnMessage({
data,
resolve
}) {
resolve(data);
}
export default class WorkerThread {
constructor({
source,
name = "web-worker-".concat(count++),
onMessage
}) {
const url = getWorkerURL(source);
this.worker = new Worker(url, {
name
});
this.name = name;
this.onMessage = onMessage || defaultOnMessage;
}
async process(data) {
return new Promise((resolve, reject) => {
this.worker.onmessage = event => this.onMessage({
worker: this.worker,
data: event.data,
resolve,
reject
});
this.worker.onerror = error => reject(error);
const transferList = getTransferList(data);
this.worker.postMessage(data, transferList);
});
}
destroy() {
this.worker.terminate();
this.worker = null;
}
}
//# sourceMappingURL=worker-thread.js.map