UNPKG

@loaders.gl/core

Version:

Framework-independent loaders for 3D graphics formats

86 lines (72 loc) 2.47 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import { getWorkerURL, getTransferList } from './worker-utils'; var count = 0; function defaultOnMessage(_ref) { var data = _ref.data, resolve = _ref.resolve; resolve(data); } var WorkerThread = function () { function WorkerThread(_ref2) { var source = _ref2.source, _ref2$name = _ref2.name, name = _ref2$name === void 0 ? "web-worker-".concat(count++) : _ref2$name, onMessage = _ref2.onMessage; _classCallCheck(this, WorkerThread); var url = getWorkerURL(source); this.worker = new Worker(url, { name: name }); this.name = name; this.onMessage = onMessage || defaultOnMessage; } _createClass(WorkerThread, [{ key: "process", value: function () { var _process = _asyncToGenerator(_regeneratorRuntime.mark(function _callee(data) { var _this = this; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", new Promise(function (resolve, reject) { _this.worker.onmessage = function (event) { return _this.onMessage({ worker: _this.worker, data: event.data, resolve: resolve, reject: reject }); }; _this.worker.onerror = function (error) { return reject(error); }; var transferList = getTransferList(data); _this.worker.postMessage(data, transferList); })); case 1: case "end": return _context.stop(); } } }, _callee); })); function process(_x) { return _process.apply(this, arguments); } return process; }() }, { key: "destroy", value: function destroy() { this.worker.terminate(); this.worker = null; } }]); return WorkerThread; }(); export { WorkerThread as default }; //# sourceMappingURL=worker-thread.js.map