Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@calvinmetcalf
Created June 30, 2013 19:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calvinmetcalf/5896567 to your computer and use it in GitHub Desktop.
Save calvinmetcalf/5896567 to your computer and use it in GitHub Desktop.
better (usable) ajax worker
//your main script
function ParalellAjax(){
var ajaxWorker = new Worker('worker.js');
var i = 0;
var cbs = [];
this.close = function(){
ajaxWorker.close();
};
ajaxWorker.onmessage = function(e){
var cb = cbs[e.data[0]];
cb(null,e.data[1]);
};
this.data = function(url,callback){
var j = i++;
cbs[j] = callback;
ajaxWorker.postMessage([j,url]);
}
}
//your worker
var quickAjax = function(url,callback){
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function(resp){
if(ajax.readyState === 4 && ajax.status === 200) {
calback(JSON.stringify(ajax.response));
}
}
ajax.open('GET',url,true);
ajax.send();
}
self.onmessage = function(e){
quickAjax(e.data[1],function(resp){
self.postMessage([e.data[0],resp]);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment