Use promises / deferreds. jQuery's implementation isn't very good (last time I checked) but it's usable for simple things.
var results = (function($){
var objData,
callback = function (data) {
objData = data;
};
function getData() {
return $.getJSON('/url', function(data){ // added return here
callback(data)
});
}
function updateUI(){
console.log(objData);
}
return {
get : getData,
show : updateUI,
//put : putData
}
})(jQuery);
results.get().done(function () { // add `done`
results.show();
});