2

こんにちは、私は次のことをしようとしています。
現在設計中のシステムに次のようなモジュールがあります

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 () {
      }
}
}
};

たとえば、次のように queryDispatcher をインスタンス化するとします。

var qd = queryDispatcher.init(); 
var google = qd.callGoogle("hey there"); 

結果を取得できるはずです。現在、結果は配列 g にプッシュされていますが、これは最初は空であり、非同期の getJSON 呼び出しのために、g を返そうとすると常に空です。

配列 g と total_google 変数を返すことができるように、非同期呼び出しが完了するのを待つにはどうすればよいですか?

4

0 に答える 0