JSONP リクエストと、それらを同期的に行うことができないという事実について、多くの質問があります。ほとんどの回避策には、コールバック、または ajax リクエストで成功関数を使用して必要なことを行うことが含まれますが、それがうまくいくとは思いません。
背景: Solrを使用して検索アプリケーションに取り組んでいます。私は、他の人が Solr と対話するために使用する JavaScript API を開発しているので、Solr 検索要求の内外を理解する必要はありません。
私の API には、doRequest という関数を持つ Request オブジェクトがあります。この関数の目的は、solr サーバー (別のドメイン上にあるため、JSONP が必要) への呼び出しを実行し、Response オブジェクトを返すことです。
Request.prototype.doRequest = function (){
var res = new Response();
$.ajax({
url: this.baseURL,
data: 'q=*:*&start=0&rows=10&indent=on&wt=json',
success: function(data){
res.response = data.response;
res.responseHeader = data.responseHeader;
/*
other...
stuff...
*/
},
dataType: 'jsonp',
jsonp: 'json.wrf'
});
res.request = this;
return res;
};
「ユーザー」はこの機能を次のように使用します...
var req = new Request();
var res = req.doRequest();
次に、結果を res にして何かを行います。
同期JSONPリクエストを実行できず、ajax関数内から戻ることができないため、ユーザーが使用を開始する前に res が完全に入力されていることを確認することはできません。
ありがとう、