これが繰り返しの質問である場合は申し訳ありません。私は調査を行いましたが、まだ答えを出すことができません:
私は小さな JSONP API を書いています。望ましい結果:
プログラマーは、JSON クラスのインスタンスを作成します。
var json = new jsonpRequest ( "http://url.to.web_service", searchParam //passed in as an associative array );
次に、プログラマーは次のように宣言します。
var myJSON = jsonpRequest.getJsonP()
これにより、JSONP が処理される myJSON 変数に返されます。
API は、クラスのインスタンスが構築されるときにパラメーターを正常に取り込み、目的のパラメーターを使用してサービスへのリンクを生成し、この関数を使用してスクリプト タグを介して DOM に挿入します。
jsonpRequest.prototype.fetchJsonp = function(){
var request = that.getRequest();
//creates a script element
var jsonpCall = document.createElement('script');
//gets jsonp request
jsonpCall.src = request;
//adds script to DOM, which goes on to request the JSONP from the service.
document.head.appendChild(jsonpCall);
};
編集:わかりやすくするために: これは、要求されたデータ セットを確実に返します。
コールバックとして使用している関数は次のとおりです。
jsonpRequest.prototype.processCallback = function(data){
alert(data);
that.setListOfResults(data);
};
リンクでは次のように呼び出されます。&callback=jsonpRequest.prototype.processCallback
関数はリクエストからデータを受け取り、processCallback
関数を使用してクラス内の変数に格納しsetListOfResults
ます。
myJSON
データが保存された後、リクエストから変数にデータを返したいと思います。これはgetJsonp
、プログラマーがプロセスのステップ 2 で呼び出す関数です。
jsonpRequest.prototype.getJsonp = function(){
that.buildRequest();
that.fetchJsonp();
return that.listOfResults;
};
問題:
JSON API クラスを定義した後に呼び出すものは次のとおりです。
var myJSON = json.getJsonp();
console.log(myJSON);
非同期であるため、コールバック関数が呼び出される前にコンソール ログに移動しているためMYJSON
、undefined
. 先に進む前にコールバックを実行するような方法でコードをデイジー チェーンする方法がわかりません。
How can I get this JSONP call to return a value?のソリューションをエミュレートしようとしました。. 一歩抜けているか、何かを知らないのかもしれません! これを明確にするための助けをいただければ幸いです。前もって感謝します :)。
PS JQueryなどの使用は避けたいと思います...これを生のJavaScriptとして厳密に保持することは有益です。