Your IP : 172.69.59.18


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/uploader/core/src/helpers/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/uploader/core/src/helpers/create-worker.js

import createUniqueId from './create-unique-id';

const createWorker = (fn: Function) => {
	const workerBlob = new Blob(['(', fn.toString(), ')()'], { type: 'application/javascript' });
	const workerURL = URL.createObjectURL(workerBlob);
	const worker = new Worker(workerURL);

	return {
		post: (message, callback, transfer): void => {
			const id = createUniqueId();
			worker.onmessage = event => {
				if (event.data.id === id)
				{
					callback(event.data.message);
				}
			};

			worker.postMessage({ id, message }, transfer);
		},
		terminate: (): void => {
			worker.terminate();
			URL.revokeObjectURL(workerURL);
		}
	};
};

export default createWorker;