function getWorker() {
var blob;
window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
var mimeString = 'application/javascript';
var code = "onmessage = function(e) { \
var callback = Function('return ' + e.data[0])();\
postMessage(callback.apply(this, e.data[1])); }";
try {
blob = new Blob([code], {type: mimeString});
} catch (e) {
var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
window.MozBlobBuilder || window.MSBlobBuilder;
var bb = new BlobBuilder();
bb.append(code);
blob = bb.getBlob(mimeString);
}
var url = window.URL.createObjectURL(blob);
var worker = new Worker(url);
URL.revokeObjectURL(url);
return worker;
}
function test(a, b) {
var result = 0;
for (; a < b; a += 1) result += a;
return result;
}
var worker = getWorker();
worker.postMessage([test.toString(), [1, 99999]]);
worker.onmessage = function (e) { alert(e.data);};
worker сами по себе интересная штука. можно и динамически запускать
P.S. Где-то я ошибся для Ie, Edge