2012-04-19 11 views
0

少年問題、私は知っています。 しかし、関数の途中でAjaxを呼び出して、同じ関数で応答を処理する方法はありますか?リクエスト後に次のコード行でAjaxレスポンスを取得できますか?

単純な解決策はありませんが、複雑なものを提案できる場合は、非常に良いでしょう。

Codesample:Ajaxの中にAを取り払うことのない

function getSomeAjax(){ 
    var params = prepareRequestParams(); 
    //do some ajax magic here and get ajaxResponseData 
    return ajaxResponseData; 
} 
+0

なぜそれが必要ですか? CPSスタイルに何が問題なのですか? – penartur

+0

@penartur私は、彼の現在の機能構造を本当に愛していて、非同期のニーズに耳を傾けたくない年配の同僚を持っています。だから私は完全なエイリアンを書いて、未知のコードのための可能なきれいな解決策のためのserchingをしたくない。それは悲しいことだ。 –

+0

彼は、ブラウザのUIがイベント駆動型環境であり、自分のコーディングスタイルを適合させることを受け入れる必要があります。 :) – Quentin

答えて

3

ありません。非同期要求(xhr.open()の第3引数をfalseに設定)の代わりに同期要求を使用できますが、応答が返るまですべてのJS処理がロックされるため、ひどい考えです。

コールバックメソッドを使用するだけです。

+0

私が考えていたものとまったく同じものです。しかし、私は本当にそれを第三者から聞く必要があった。ありがとうございました。 –

1

はそれのためのコールバック関数を使用します。

function test(){ 
    //ajaxcall here, with a callback function to callback() 
} 

function callback(){ 
    // do the thing you want here 
} 
1

あなたが同期を使用する場合は言及しませんでした。または同期する。呼び出し。
asynchを使用しています。 ajaxReponseDataを返そうとした後にサーバーから応答が返ってくるので、synchを使用する可能性があります。呼び出しは最も簡単な方法です。

私はもちろん、その同期を警告する必要があります。 Ajaxを呼び出すと、応答を待つ間にクライアントブラウザがフリーズすることがあるので、同期を使用する必要があると考える場合は、デザインを再考する必要があります。バージョン。

関連する問題