Skip to content

Instantly share code, notes, and snippets.

@jameswomack
Created September 11, 2012 06:41
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save jameswomack/3696516 to your computer and use it in GitHub Desktop.
Save jameswomack/3696516 to your computer and use it in GitHub Desktop.
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