Caching data using object 2

Caching Data API responses using 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

var cachedTweetPromises = {};

$.cachedGetTweet = function(query, callback){
    
    console.log(cachedTweetPromises[query] ? 'FROM [CACHE]' : 'FROM [AJAX]');
    
    if(!cachedTweetPromises[query]){
        cachedTweetPromises[query] = $.Deferred(function(defer){
            $.ajax({
                url : 'http://search.twitter.com/search.json',
                dataType : 'jsonp',
                data : {
                    result_type : 'recent',
                    rpp : 10,
                    page : 1,
                    q : query
                }
            }).then(defer.resolve, defer.reject);
        }).promise();
    };
    return cachedTweetPromises[query].done(callback);
};

$(function(){
    
    var $button = $('button');
    
    $button.on('click', function(){
        $.cachedGetTweet('fingaholic', function(res){
            console.log(res);
        });
    });

});