title: Returning values after async call
body: <p>Hi i have been trying to do the following.<br>
  I have a module in a system i am currently designing which is as follows</p>
  
  <pre><code>var queryDispatcher = {
  
    init: function () {
  
    var g = new Array() ; 
    var b = new Array() ; 
    var y = new Array() ; 
  
    var total_google = 0 ; 
    var total_bing = 0 ; 
    var total_yahoo = 0 ;
  
    return {
  
        callGoogle: function (query) {
  
         var url = 'http://localhost/meta/public/google/'+query ; 
          $.getJSON(url, function(data) {
              total_google = data.searchInformation.totalResults; 
              var i = 0 ; 
              $.each(data.items, function() {
                var obj = new res(i+1, this.title, this.snippet, this.link, 0) ; 
                g.push(obj) ; 
                i=i+1 ;
              });
          });
          return true ; 
        },
  
        callBing: function (query) {
  
            var url = 'http://localhost/meta/public/bing/'+query ; 
              $.getJSON(url, function(data) {
                total_bing = data.d.results[0].WebTotal;
                var j = 0 ; 
                  $.each(data.d.results[0].Web, function() {
                    var obj = new res(j+1, this.Title, this.Description, this.Url, 0) ; 
                    b.push(obj) ; 
                    j=j+1 ;
                  });
              });
        },
  
        callYahoo: function (query) {
            var url = 'http://localhost/meta/public/yahoo/'+query ; 
            $.getJSON(url, function(data) {
                        total_yahoo = data.bossresponse.web.totalresults;
                        var k = 0 ; 
                        $.each(data.bossresponse.web.results, function() {
                          var obj = new res(k+1, this.title, this.abstract, this.url, 0) ; 
                          y.push(obj) ; 
                          k=k+1 ;
                        });
            });
        },
        getGoogle: function () {
        }
  }
  }
  };
  </code></pre>
  
  <p>Now if for example i instantiate queryDispatcher as follows: </p>
  
  <pre><code>var qd = queryDispatcher.init(); 
  var google = qd.callGoogle("hey there"); 
  </code></pre>
  
  <p>I should be able to retrieve the results. Currently the results are being pushed into the array g which is empty initally and because of the async getJSON call, when i try to return g it is always empty. </p>
  
  <p>How can i wait for the async call to be completed so i can return the array g and the total_google variable? </p>