こんにちは、私は次のことをしようとしています。
現在設計中のシステムに次のようなモジュールがあります
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 変数を返すことができるように、非同期呼び出しが完了するのを待つにはどうすればよいですか?