A処理:
INPUT type=textの要素のvalue値で、DBから当該枠に入力された取引先コードの名称を取得して
別のINPUT type=textの要素(ReadOnly)にその名称を収める処理です。
dcdinfogetというFUNCTIONを、取引先コード枠の内容変化を察知して呼び出すようなつくりです。
B処理:
ラジオボタンの変化察知で、上記で画面表示された取引先名称を始めとした複数のINPUT type=textの内容から関連する実績データをDBから取得またTableへ明細生成する処理です。
【質問】
A処理もB処理も、ユーザ操作をトリガとした作りになっていますが、『A処理・B処理が立て続けに行われた際』にA処理の完了を待たずしてB処理が行われる傾向にあります。
B処理の引数をA処理で生成しているわけですから、A処理が確実に完了するまでB処理の内部動作を保留にしたい、というのが願いです。
こういった場合、どういう解決策をとるのが一般的なのでしょうか?
B処理の中で、A処理で呼び出されているFUNCTIONを無条件に呼び出すことに問題はありません。
【悩ましいところ】
B処理は既にDeferredなる技術を採用し、DB参照用途のFUNCTIONを呼ぶようにしています。
DBから実績データを得る上で、真っ先に画面をモーダル化・全体を覆う透過DIVを表して、このFUNCTIONのDONEで当該の透過DIVを消す、Tableをあらわにする流れです。
当方はDefferredを入れ子にしたことがありません。やはり入れ子にすべき、とするとどういった記述をするのでしょうか?
それとも、ただ単にhiddenの要素をA処理の利用中・利用完了状態を表す項目として使い、B処理の中でこれをミリ秒単位/ループで確認するのが常套手段なのでしょうか?
A処理
JQuery
1$("#dcd").on("change",function() { 2 dcdinfoGet($(this)); 3});
B処理
JQuery
1function updRenew () { 2 updRemove(); 3 // モーダルモードにするため画面を覆う 4 $("body").append('<div id="modal-overlay"></div>') ; 5 $("#modal-overlay").append("<img id='loader' src='./img/ajax-loader.gif' alt='Now Loading...'>"); 6 $("#modal-overlay").fadeIn("slow"); 7 var d = mcrsvinq(); 8 d.done(function(){ 9 $("#loader").remove(); 10 $("#modal-overlay").fadeOut("slow", function(){ 11 $('#modal-overlay').remove(); 12 }); 13 }); 14 d.fail(function(){ 15 $("#modal-overlay").fadeOut("slow", function(){ 16 $('#modal-overlay').remove(); 17 }); 18 alert("【基幹システムから予約情報を参照できず...】"); 19 return false; 20 }); 21}
ご見解を頂けましたら幸です、ヒントだけでも!
回答1件
あなたの回答
tips
プレビュー