2017-03-16 11 views
0

jqueryを使用しているときに「when、then」を実行していくつかの操作を行います。 doAddProcedure関数を使用して計算を実行しています。 doAddProcedure関数でコードを実行した後のような結果が期待されている場合、コントロールはAddProceduresに戻り、Doneセクションのコードに戻ります。しかし、期待どおりに機能しませんでした。また、私はdoAddProcedureセクションのコードの実行時に表示するローダーを表示しています。ローダーは、doAddProcedureでコードを実行するのにかかる時間に表示されませんでした。私の英語のためissue.Sorryを修正するために私を助けてくださいことはjquery "when + Then"が期待どおりに動作しない

これはあなたがwhenthenに約束を延期渡したりしていない時にすぐに実行されるため

var tot_codes = 0; 
    function doAddProcedure(thisval) 
    { 

     top.ShowAjaxLoader('Loading..');  
     var countval = $("#last_id").val(); 


      //My code block.... 
     return true; 
    } 
    /** 
    * Function to add procedures 
    * @returns {undefined} 
    */ 
    function AddProcedures(thisval) 
    { 
     $.when(doAddProcedure(thisval)).then(function(){   
      if (tot_codes > 0) { 
       //setTimeout(function(){ 

       top.notification('successfully added the codes.');    
       //top.window.parent.document.getElementById('circularG').hide(); 
       window.parent.phFrntpayClosePopup();   
       //top.window.parent.document.getElementById("loaderHtml").style.display = "none";   
       //}, 3000); 

     } else {   
      top.notification('Please select atleast one code.');  
     }   
     }); 
    } 

AddProcedures(thisval); // Calling main Function 
+0

[リンク](http://stackoverflow.com/help/mcve) –

+0

私はコードブロックを削減。 –

答えて

1

これは私のコードです。それはtrueを待ちif条件のいくつかの並べ替えであるかのようにあなたがwhen()を扱っているあなたのケースではWhen..Then

のためのjQueryのドキュメントを見て...私は、あなたがPromiseについての詳細を読むことをお勧めDeferred、その後、戻ってきますwhen..thenロジックを使用するか、Promiseを使用してください。

あなたは可能性があり、以下のようなコースを使用するコールバック関数の:

doAddProcedure(thisVal,callbackFunc){ 
// do stuff 
callbackFunc(); 
// If you wish to wait a moment (say 3 seconds here) before the callbackFunc() is called, and it is purely cosmetic, then comment the above and uncomment the below ! 
//setTimeout(callbackFunc, 3000); 
} 

myFunction = function(){   
      if (tot_codes > 0) { 
       //setTimeout(function(){ 

       top.notification('successfully added the codes.');    
       //top.window.parent.document.getElementById('circularG').hide(); 
       window.parent.phFrntpayClosePopup();   
       //top.window.parent.document.getElementById("loaderHtml").style.display = "none";   
       //}, 3000); 

     } else {   
      top.notification('Please select atleast one code.');  
     }   
     }; 

function AddProcedures(thisval) 
    { 
     doAddProcedure(thisval, myFunction); 
    } 
+0

私はちょうど上記のリンクを取ったが、すべての例はajax用です。あなたは私に上記のようなサンプルコードを与えることができますか?私はフロントエンドのスクリプトで十分な経験がありません。 –

+0

私はあなたが単純にコールバック関数を使ってそれを解決することを提案しました。そうしないと、あなたが理解できない、あるいは読み込む前に読んでしまうかもしれません。 –

+0

上記のようにコードを変更しました。しかし、私の読み込みイメージは表示されません。それは私が与えられた場合に表示されますfalseの真上にtop.notification( '正常にコードを追加'); 。これは、ローダを隠すために使用されるコードです。 –

関連する問題