Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Extend function prototype to run a function as a WebWorker
Function.prototype.runOnBackgroundThread = function (aCallback) {
var _blob = new Blob(['onmessage = '+this.toString()],{"type":"text/javascript"});
var _worker = new Worker((webkitURL.createObjectURL || URL.createObjectURL)(_blob));
_worker.onmessage = aCallback;
_worker.postMessage();
}
var _test = function () {
postMessage((1+1).toString());
}
_test.runOnBackgroundThread(function(e){
alert(e.data);
});
@jdalton
Copy link

jdalton commented Sep 18, 2012

Neat! Be sure to check that webkitURL and others exists before attempting to access methods like createObjectURL or it will throw an error.

@WebReflection
Copy link

doesn't work on iOS regardless both Worker, Blob, and webkitURL are there :-/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment