• 締切済み

無名関数内の変数のreturn

function get_record(id,step,exefunc) { httpObj = new XMLHttpRequest(); ...XMLHttpRequest非同期通信  httpObj.onreadystatechange = function() { if(httpObj.readyState == 4) && (httpObj,status == 200) { data = httpObj.responseText; exefunc(data); }}} 上記関数でデータを1件取得します。 質問は2つあって、今はhttpObj.responseTextをexefunc関数の引数として渡して、responseTextを処理しています。 httpObj.responseTextをexefunc関数で処理するのではなくて、returnしたいのですが、どうすればよいかわかりません。無名関数の中にあるので、dataをreturnしても、外からは参照できないのです。 もう一つの問題は、get_record関数を呼び出す関数は2つあって、その2つを同時にwindow.onloadで実行したいのです。 get_recordでデータを取得、そのデータを表示するための関数disp1,disp2(表示場所が違うため2つにわけています)をwindow.loadで実行したいのですが、後に記述されたほうしか実行されません。 どうすれば2つがwindow.onloadで実行できるでしょうか。 足りない情報等あれば教えてください。 よろしくお願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

自信無しですが、 同期型でsend すれば、イベント駆動を使わなくていいようになるんじゃないかな。 もう1つの問題も同じ。 http://jsgt.org/mt/archives/01/000409.html http://jsgt.org/ajax/ref/lib/ref.htm なんかのライブラリを使うと、 非同期でも上書しないようになっている とあるので、参考になるかも。

first-try
質問者

補足

確かに、同期にすれば問題は解決しました。 動作はちょっと遅くなりましたが・・・ ライブラリも後で参考にします。 ありがとうございます!

関連するQ&A