var getCachedJSON = function (url) { var deferred = new $.Deferred(); var cachedData = window.localStorage[url]; if (cachedData) { log('Data already cached, returning from cache:', url); deferred.resolve(JSON.parse(cachedData)); } else { $.getJSON(url, function(data) { log('Fetched data, saving to cache:', url); window.localStorage[url] = JSON.stringify(data); deferred.resolve(data); }); } return deferred.promise(); };