typescript-libraries
Version:
To install this library, run:
33 lines (32 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TSWorker = void 0;
var TSWorker = /** @class */ (function () {
function TSWorker() {
}
TSWorker.create = function (WorkerFunction) {
if ('Worker' in window) {
var worker_1 = new WorkerFunction();
var lastRequestId_1 = 0;
var pendingPromises_1 = new Map();
worker_1.onmessage = function (event) {
var _a = event.data, id = _a.id, result = _a.result;
if (pendingPromises_1.has(id)) {
var resolve = pendingPromises_1.get(id);
resolve(result);
pendingPromises_1.delete(id);
}
};
return function (params) {
var requestId = ++lastRequestId_1;
var promise = new Promise(function (resolve) {
pendingPromises_1.set(requestId, resolve);
worker_1.postMessage({ id: requestId, params: params });
});
return promise;
};
}
};
return TSWorker;
}());
exports.TSWorker = TSWorker;