2016-12-11 11 views
0

ajaxが遅延関数の中で実行されるまで待つ方法はありますか?例:

function action() { 
     console.log('action is called'); 

     var deferred = $.Deferred(); 

     console.log('do some actions...'); 

     //Wait until the ajax is completed and continue script 
     var myAjaxCall = ajaxCall(); 

     //Execute te next scripts only after the ajax done 

     console.log('do some actions...'); 

     return deferred.promise(); 
    } 


    function ajaxCall() { 
     console.log('ajaxCall is called'); 

     return $.ajax('url').then(function() { 
      console.log('success ajaxCall'); 
     }); 
    } 

    action().then(function() { 
     console.log('after action is done and ajaxCall is done'); 
    }); 

problemeは、彼が機能アヤックスが内部と呼ばれ、完了するまで待ってから他のスクリプトを継続しなければならないということです。

ありがとうございます。

+0

は、関数。 – adeneo

答えて

2

あなたは約束then()のチェーンすることができます。

また$.ajaxが既にaction()の内側にあなたが何か行うことができますので、1

を返す新しい約束を作成する必要はありません:あなたは `action`内部` Deferred`を解決することはありません

function action() { 
    console.log('action is called'); 

    var myAjaxCall = ajaxCall(); 

    return myAjaxCall.then(function(result){ 
     // do stuff here after ajax is successfull 
    }); 
} 
+0

しかし、action()は、アノテーション関数内で呼び出され、遅延が含まれています。 – Titeufggg

+0

何を意味するかわからない...質問に表示されているものではない – charlietfl

+0

とにかくあなたの答えをありがとう – Titeufggg

関連する問題