function fetchData(url, options, cb){ if(!cb) throw new Error('Please suply a callback function!'); if(!fetchData._cache) fetchData._cache = {}; var settings = { method: "GET", url: url } extend(settings, options); if(!fetchData._cache[url]){ $.ajax(settings) .done(function(data){ fetchData._cache[url] = data; cb(null,data); }) .fail(function(jqXHR, textStatus, errorThrown){ var errData = { jqXHR: jqXHR, textStatus:textStatus, errorThrown:errorThrown }; cb(errData, null); }) } else{ cb(null,fetchData._cache[url]); } }