Caching data using deferred object
Caching Data API responses using deferred object.
by FiNGAHOLiC
HTML
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
<button>Get tweet!</button>
JavaScript
// http://msdn.microsoft.com/en-us/scriptjunkie/gg723713
$.createCache = function(requestFunction){
var cache = {};
return function(key, callback){
if(!cache[key]){
cache[key] = $.Deferred(function(defer){
requestFunction(defer, key);
}).promise();
};
return cache[key].done(callback);
};
};
$.cachedGetTweet = $.createCache(function(defer, query){
console.log('FROM [AJAX]');
$.ajax({
url : 'http://search.twitter.com/search.json',
data : {
result_type : 'recent',
rpp : 10,
page : 1,
q : query
}
}).then(defer.resolve, defer.reject);
});
$(function(){
var $button = $('button');
$button.on('click', function(){
$.cachedGetTweet('jquery').then(function(res){
console.log(res);
}, function(){
console.log('something wrong');
});
});
});